From a6f32bea1399ac70c733dd9106c78ae9a3f62c2b Mon Sep 17 00:00:00 2001 From: Jesper Gravgaard Date: Wed, 14 Feb 2018 10:05:18 +0100 Subject: [PATCH] Renamed multiply.kc to fastmultiply.kc - and methods multiply()/signed_multiply() to mulf8u(), mulf8s() --- .../test/kc/{multiply.kc => fastmultiply.kc} | 48 +- .../camelot64/kickc/test/kc/test-multiply.kc | 62 +- .../kickc/test/ref/test-multiply.asm | 126 +- .../kickc/test/ref/test-multiply.cfg | 334 +- .../kickc/test/ref/test-multiply.log | 6418 ++++++++--------- .../kickc/test/ref/test-multiply.sym | 334 +- 6 files changed, 3660 insertions(+), 3662 deletions(-) rename src/test/java/dk/camelot64/kickc/test/kc/{multiply.kc => fastmultiply.kc} (63%) diff --git a/src/test/java/dk/camelot64/kickc/test/kc/multiply.kc b/src/test/java/dk/camelot64/kickc/test/kc/fastmultiply.kc similarity index 63% rename from src/test/java/dk/camelot64/kickc/test/kc/multiply.kc rename to src/test/java/dk/camelot64/kickc/test/kc/fastmultiply.kc index 18f74a31e..42413bb56 100644 --- a/src/test/java/dk/camelot64/kickc/test/kc/multiply.kc +++ b/src/test/java/dk/camelot64/kickc/test/kc/fastmultiply.kc @@ -2,24 +2,24 @@ // See http://codebase64.org/doku.php?id=base:seriously_fast_multiplication // Utilizes the fact that a*b = ((a+b)/2)^2 - ((a-b)/2)^2 -// mul_sqr tables will contain f(x)=int(x*x/4) and g(x) = f(x-255). +// mulf_sqr tables will contain f(x)=int(x*x/4) and g(x) = f(x-255). // f(x) = >(( x * x )/4) -byte[512] align($100) mul_sqr1_hi; +byte[512] align($100) mulf_sqr1_hi; // g(x) = >((( x - 255) * ( x - 255 ))/4) -byte[512] align($100) mul_sqr2_hi; +byte[512] align($100) mulf_sqr2_hi; -// Initialize the mul_sqr multiplication tables with f(x)=int(x*x/4) -void init_multiply() { - // Fill mul_sqr1 = f(x) = int(x*x/4): If f(x) = x*x/4 then f(x+1) = f(x) + x/2 + 1/4 +// Initialize the mulf_sqr multiplication tables with f(x)=int(x*x/4) +void mulf_init() { + // Fill mulf_sqr1 = f(x) = int(x*x/4): If f(x) = x*x/4 then f(x+1) = f(x) + x/2 + 1/4 word sqr = 0; // sqr = (x*x)/4 byte x_2 = 0; // x/2 byte c = 0; // Counter used for determining x%2==0 - byte* sqr1_hi = mul_sqr1_hi+1; - for(byte* sqr1_lo = mul_sqr1_lo+1; sqr1_lo!=mul_sqr1_lo+512; sqr1_lo++) { + byte* sqr1_hi = mulf_sqr1_hi+1; + for(byte* sqr1_lo = mulf_sqr1_lo+1; sqr1_lo!=mulf_sqr1_lo+512; sqr1_lo++) { if((++c&1)==0) { x_2++; // increase i/2 on even numbers sqr++; // sqr++ on even numbers because 1 = 2*1/4 (from the two previous numbers) + 1/2 (half of the previous uneven number) @@ -28,27 +28,27 @@ void init_multiply() { *sqr1_hi++ = >sqr; sqr = sqr + x_2; // sqr = sqr + i/2 (when uneven the 1/2 is not added here - see above) } - // Fill mul_sqr2 = g(x) = f(x-255) : If x-255<0 then g(x)=f(255-x) (because x*x = -x*-x) + // Fill mulf_sqr2 = g(x) = f(x-255) : If x-255<0 then g(x)=f(255-x) (because x*x = -x*-x) // g(0) = f(255), g(1) = f(254), ..., g(254) = f(1), g(255) = f(0), g(256) = f(1), ..., g(510) = f(255), g(511) = f(256) byte x_255 = (byte)-1; //Start with g(0)=f(255) byte dir = $ff; // Decrease or increase x_255 - initially we decrease - byte* sqr2_hi = mul_sqr2_hi; - for(byte* sqr2_lo = mul_sqr2_lo; sqr2_lo!=mul_sqr2_lo+511; sqr2_lo++) { - *sqr2_lo = mul_sqr1_lo[x_255]; - *sqr2_hi++ = mul_sqr1_hi[x_255]; + byte* sqr2_hi = mulf_sqr2_hi; + for(byte* sqr2_lo = mulf_sqr2_lo; sqr2_lo!=mulf_sqr2_lo+511; sqr2_lo++) { + *sqr2_lo = mulf_sqr1_lo[x_255]; + *sqr2_hi++ = mulf_sqr1_hi[x_255]; x_255 = x_255 + dir; if(x_255==0) { dir = 1; // when x_255=0 then start counting up } } // Set the very last value g(511) = f(256) - *(mul_sqr2_lo+511) = *(mul_sqr1_lo+256); - *(mul_sqr2_hi+511) = *(mul_sqr1_hi+256); + *(mulf_sqr2_lo+511) = *(mulf_sqr1_lo+256); + *(mulf_sqr2_hi+511) = *(mulf_sqr1_hi+256); } // Fast multiply two unsigned bytes to a word result // Done in assembler to utilize fast addition A+X -word multiply(byte a, byte b) { +word mulf8u(byte a, byte b) { const byte* memA = $fe; const byte* memB = $ff; *memA = a; @@ -63,14 +63,14 @@ word multiply(byte a, byte b) { ldx memB sec sm1: - lda mul_sqr1_lo,x + lda mulf_sqr1_lo,x sm2: - sbc mul_sqr2_lo,x + sbc mulf_sqr2_lo,x sta memA sm3: - lda mul_sqr1_hi,x + lda mulf_sqr1_hi,x sm4: - sbc mul_sqr2_hi,x + sbc mulf_sqr2_hi,x sta memB } return { *memB, *memA }; @@ -78,8 +78,8 @@ word multiply(byte a, byte b) { // 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); +signed word mulf8s(signed byte a, signed byte b) { + word m = mulf8u((byte)a, (byte) b); if(a<0) { >m = (>m)-(byte)b; } diff --git a/src/test/java/dk/camelot64/kickc/test/kc/test-multiply.kc b/src/test/java/dk/camelot64/kickc/test/kc/test-multiply.kc index 3f9282990..76c9b4de3 100644 --- a/src/test/java/dk/camelot64/kickc/test/kc/test-multiply.kc +++ b/src/test/java/dk/camelot64/kickc/test/kc/test-multiply.kc @@ -1,21 +1,22 @@ // Test the fast multiplication library import "print.kc" -import "multiply.kc" +import "fastmultiply.kc" byte* BGCOL = $d021; void main() { *BGCOL = 5; print_cls(); - init_multiply(); - init_multiply_asm(); + mulf_init(); + mulf_init_asm(); multiply_tables_compare(); multiply_results_compare(); signed_multiply_results_compare(); } +// Slow multiplication of unsigned bytes // Calculate an unsigned multiplication by repeated addition -word slow_multiply(byte a, byte b) { +word muls8u(byte a, byte b) { word m = 0; if(a!=0) { for(byte i = 0; i!=a; i++) { @@ -25,8 +26,9 @@ word slow_multiply(byte a, byte b) { return m; } +// Slow multiplication of signed bytes // Perform a signed multiplication by repeated addition/ -signed word slow_signed_multiply(signed byte a, signed byte b) { +signed word muls8s(signed byte a, signed byte b) { signed word m = 0; if(a<0) { for(signed byte i = 0; i!=a; i--) { @@ -42,16 +44,16 @@ signed word slow_signed_multiply(signed byte a, signed byte b) { // ASM based multiplication tables // <(( x * x )/4) -byte[512] align($100) asm_mul_sqr1_lo; +byte[512] align($100) mula_sqr1_lo; // >(( x * x )/4) -byte[512] align($100) asm_mul_sqr1_hi; +byte[512] align($100) mula_sqr1_hi; // <((( x - 255) * ( x - 255 ))/4) -byte[512] align($100) asm_mul_sqr2_lo; +byte[512] align($100) mula_sqr2_lo; // >((( x - 255) * ( x - 255 ))/4) -byte[512] align($100) asm_mul_sqr2_hi; +byte[512] align($100) mula_sqr2_hi; // Initialize the multiplication tables using ASM code from // http://codebase64.org/doku.php?id=base:seriously_fast_multiplication -void init_multiply_asm() { +void mulf_init_asm() { asm{ ldx #$00 txa @@ -60,7 +62,7 @@ void init_multiply_asm() { tya adc #$00 ml1: - sta asm_mul_sqr1_hi,x + sta mula_sqr1_hi,x tay cmp #$40 txa @@ -70,7 +72,7 @@ void init_multiply_asm() { sta ml9+1 inx ml0: - sta asm_mul_sqr1_lo,x + sta mula_sqr1_lo,x bne lb1 inc ml0+2 inc ml1+2 @@ -80,31 +82,31 @@ void init_multiply_asm() { ldx #$00 ldy #$ff !: - lda asm_mul_sqr1_hi+1,x - sta asm_mul_sqr2_hi+$100,x - lda asm_mul_sqr1_hi,x - sta asm_mul_sqr2_hi,y - lda asm_mul_sqr1_lo+1,x - sta asm_mul_sqr2_lo+$100,x - lda asm_mul_sqr1_lo,x - sta asm_mul_sqr2_lo,y + lda mula_sqr1_hi+1,x + sta mula_sqr2_hi+$100,x + lda mula_sqr1_hi,x + sta mula_sqr2_hi,y + lda mula_sqr1_lo+1,x + sta mula_sqr2_lo+$100,x + lda mula_sqr1_lo,x + sta mula_sqr2_lo,y dey inx bne !- } // Ensure the ASM tables are not detected as unused by the optimizer byte* mem = $ff; - *mem = *asm_mul_sqr1_lo; - *mem = *asm_mul_sqr1_hi; - *mem = *asm_mul_sqr2_lo; - *mem = *asm_mul_sqr2_hi; + *mem = *mula_sqr1_lo; + *mem = *mula_sqr1_hi; + *mem = *mula_sqr2_lo; + *mem = *mula_sqr2_hi; } // Compare the ASM-based mul tables with the KC-based mul tables // Red screen on failure - green on success void multiply_tables_compare() { - byte* asm_sqr = asm_mul_sqr1_lo; - for( byte* kc_sqr=mul_sqr1_lo; kc_sqrasm_mul_sqr1_lo + lda #>mula_sqr1_lo sta asm_sqr+1 - lda #mul_sqr1_lo + lda #>mulf_sqr1_lo sta kc_sqr+1 b1: ldy #0 @@ -506,11 +506,11 @@ multiply_tables_compare: { inc kc_sqr+1 !: lda kc_sqr+1 - cmp #>mul_sqr1_lo+$200*4 + cmp #>mulf_sqr1_lo+$200*4 bcc b1 bne !+ lda kc_sqr - cmp #mul_sqr1_hi+1 + lda #>mulf_sqr1_hi+1 sta sqr1_hi+1 - lda #mul_sqr1_lo+1 + lda #>mulf_sqr1_lo+1 sta sqr1_lo+1 lda #0 sta sqr @@ -641,27 +641,27 @@ init_multiply: { inc sqr1_lo+1 !: lda sqr1_lo+1 - cmp #>mul_sqr1_lo+$200 + cmp #>mulf_sqr1_lo+$200 bne b1 lda sqr1_lo - cmp #mul_sqr2_hi + lda #>mulf_sqr2_hi sta sqr2_hi+1 - lda #mul_sqr2_lo + lda #>mulf_sqr2_lo sta sqr2_lo+1 ldx #-1 b3: - lda mul_sqr1_lo,x + lda mulf_sqr1_lo,x ldy #0 sta (sqr2_lo),y - lda mul_sqr1_hi,x + lda mulf_sqr1_hi,x sta (sqr2_hi),y inc sqr2_hi bne !+ @@ -681,15 +681,15 @@ init_multiply: { inc sqr2_lo+1 !: lda sqr2_lo+1 - cmp #>mul_sqr2_lo+$1ff + cmp #>mulf_sqr2_lo+$1ff bne b3 lda sqr2_lo - cmp #=(byte/signed byte/word/signed word/dword/signed dword) 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 byte/word/signed word/dword/signed dword~) signed_multiply::$16 ← (byte~) signed_multiply::$6 - (byte)(signed byte) signed_multiply::b#0 [ 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 ] ) - [121] (word) signed_multiply::m#1 ← (word) signed_multiply::m#0 hi= (byte/signed byte/word/signed word/dword/signed dword~) 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 - [122] (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 ] ) - [123] if((signed byte) signed_multiply::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 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 - [124] (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 ] ) - [125] (byte/signed byte/word/signed word/dword/signed dword~) signed_multiply::$17 ← (byte~) signed_multiply::$12 - (byte)(signed byte) signed_multiply::a#0 [ 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 ] ) - [126] (word) signed_multiply::m#2 ← (word) signed_multiply::m#5 hi= (byte/signed byte/word/signed word/dword/signed dword~) 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 - [127] (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 ] ) - to:signed_multiply::@return -signed_multiply::@return: scope:[signed_multiply] from signed_multiply::@2 - [128] return [ 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 ] ) +mulf8s: scope:[mulf8s] from signed_multiply_results_compare::@8 + [113] (byte~) mulf8u::a#3 ← (byte)(signed byte) mulf8s::a#0 [ mulf8s::a#0 mulf8s::b#0 mulf8u::a#3 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::a#0 mulf8s::b#0 mulf8u::a#3 ] ) + [114] (byte~) mulf8u::b#3 ← (byte)(signed byte) mulf8s::b#0 [ mulf8s::a#0 mulf8s::b#0 mulf8u::a#3 mulf8u::b#3 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::a#0 mulf8s::b#0 mulf8u::a#3 mulf8u::b#3 ] ) + [115] call mulf8u param-assignment [ mulf8s::a#0 mulf8s::b#0 mulf8u::return#0 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::a#0 mulf8s::b#0 mulf8u::return#0 ] ) + [116] (word) mulf8u::return#2 ← (word) mulf8u::return#0 [ mulf8s::a#0 mulf8s::b#0 mulf8u::return#2 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::a#0 mulf8s::b#0 mulf8u::return#2 ] ) + to:mulf8s::@6 +mulf8s::@6: scope:[mulf8s] from mulf8s + [117] (word) mulf8s::m#0 ← (word) mulf8u::return#2 [ mulf8s::a#0 mulf8s::b#0 mulf8s::m#0 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::a#0 mulf8s::b#0 mulf8s::m#0 ] ) + [118] if((signed byte) mulf8s::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s::@1 [ mulf8s::a#0 mulf8s::b#0 mulf8s::m#0 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::a#0 mulf8s::b#0 mulf8s::m#0 ] ) + to:mulf8s::@3 +mulf8s::@3: scope:[mulf8s] from mulf8s::@6 + [119] (byte~) mulf8s::$6 ← > (word) mulf8s::m#0 [ mulf8s::a#0 mulf8s::b#0 mulf8s::m#0 mulf8s::$6 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::a#0 mulf8s::b#0 mulf8s::m#0 mulf8s::$6 ] ) + [120] (byte/signed byte/word/signed word/dword/signed dword~) mulf8s::$16 ← (byte~) mulf8s::$6 - (byte)(signed byte) mulf8s::b#0 [ mulf8s::a#0 mulf8s::b#0 mulf8s::m#0 mulf8s::$16 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::a#0 mulf8s::b#0 mulf8s::m#0 mulf8s::$16 ] ) + [121] (word) mulf8s::m#1 ← (word) mulf8s::m#0 hi= (byte/signed byte/word/signed word/dword/signed dword~) mulf8s::$16 [ mulf8s::a#0 mulf8s::b#0 mulf8s::m#1 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::a#0 mulf8s::b#0 mulf8s::m#1 ] ) + to:mulf8s::@1 +mulf8s::@1: scope:[mulf8s] from mulf8s::@3 mulf8s::@6 + [122] (word) mulf8s::m#5 ← phi( mulf8s::@3/(word) mulf8s::m#1 mulf8s::@6/(word) mulf8s::m#0 ) [ mulf8s::a#0 mulf8s::b#0 mulf8s::m#5 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::a#0 mulf8s::b#0 mulf8s::m#5 ] ) + [123] if((signed byte) mulf8s::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s::@2 [ mulf8s::a#0 mulf8s::m#5 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::a#0 mulf8s::m#5 ] ) + to:mulf8s::@4 +mulf8s::@4: scope:[mulf8s] from mulf8s::@1 + [124] (byte~) mulf8s::$12 ← > (word) mulf8s::m#5 [ mulf8s::a#0 mulf8s::m#5 mulf8s::$12 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::a#0 mulf8s::m#5 mulf8s::$12 ] ) + [125] (byte/signed byte/word/signed word/dword/signed dword~) mulf8s::$17 ← (byte~) mulf8s::$12 - (byte)(signed byte) mulf8s::a#0 [ mulf8s::m#5 mulf8s::$17 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::m#5 mulf8s::$17 ] ) + [126] (word) mulf8s::m#2 ← (word) mulf8s::m#5 hi= (byte/signed byte/word/signed word/dword/signed dword~) mulf8s::$17 [ mulf8s::m#2 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::m#2 ] ) + to:mulf8s::@2 +mulf8s::@2: scope:[mulf8s] from mulf8s::@1 mulf8s::@4 + [127] (word) mulf8s::m#4 ← phi( mulf8s::@1/(word) mulf8s::m#5 mulf8s::@4/(word) mulf8s::m#2 ) [ mulf8s::m#4 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::m#4 ] ) + to:mulf8s::@return +mulf8s::@return: scope:[mulf8s] from mulf8s::@2 + [128] return [ mulf8s::m#4 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::m#4 ] ) to:@return -multiply: scope:[multiply] from multiply_results_compare::@8 signed_multiply - [129] (byte) multiply::b#2 ← phi( multiply_results_compare::@8/(byte) multiply::b#1 signed_multiply/(byte~) multiply::b#4 ) [ 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:157 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply::a#2 multiply::b#2 ] ) - [129] (byte) multiply::a#2 ← phi( multiply_results_compare::@8/(byte) multiply::a#1 signed_multiply/(byte~) multiply::a#4 ) [ 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:157 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply::a#2 multiply::b#2 ] ) - [130] *((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:157 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply::b#2 ] ) - [131] *((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:157 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ) - asm { ldamemA stasm1+1 stasm3+1 eor#$ff stasm2+1 stasm4+1 ldxmemB sec sm1: ldamul_sqr1_lo,x sm2: sbcmul_sqr2_lo,x stamemA sm3: ldamul_sqr1_hi,x sm4: sbcmul_sqr2_hi,x stamemB } - [133] (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:157 [ line_cursor#10 char_cursor#30 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 - [134] 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:157 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply::return#0 ] ) +mulf8u: scope:[mulf8u] from mulf8s multiply_results_compare::@8 + [129] (byte) mulf8u::b#2 ← phi( mulf8s/(byte~) mulf8u::b#3 multiply_results_compare::@8/(byte) mulf8u::b#1 ) [ mulf8u::a#2 mulf8u::b#2 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27::mulf8u:115 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::a#0 mulf8s::b#0 mulf8u::a#2 mulf8u::b#2 ] main:2::multiply_results_compare:13::mulf8u:157 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 mulf8u::a#2 mulf8u::b#2 ] ) + [129] (byte) mulf8u::a#2 ← phi( mulf8s/(byte~) mulf8u::a#3 multiply_results_compare::@8/(byte) mulf8u::a#1 ) [ mulf8u::a#2 mulf8u::b#2 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27::mulf8u:115 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::a#0 mulf8s::b#0 mulf8u::a#2 mulf8u::b#2 ] main:2::multiply_results_compare:13::mulf8u:157 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 mulf8u::a#2 mulf8u::b#2 ] ) + [130] *((const byte*) mulf8u::memA#0) ← (byte) mulf8u::a#2 [ mulf8u::b#2 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27::mulf8u:115 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::a#0 mulf8s::b#0 mulf8u::b#2 ] main:2::multiply_results_compare:13::mulf8u:157 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 mulf8u::b#2 ] ) + [131] *((const byte*) mulf8u::memB#0) ← (byte) mulf8u::b#2 [ ] ( main:2::signed_multiply_results_compare:15::mulf8s:27::mulf8u:115 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::a#0 mulf8s::b#0 ] main:2::multiply_results_compare:13::mulf8u:157 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ) + asm { ldamemA stasm1+1 stasm3+1 eor#$ff stasm2+1 stasm4+1 ldxmemB sec sm1: ldamulf_sqr1_lo,x sm2: sbcmulf_sqr2_lo,x stamemA sm3: ldamulf_sqr1_hi,x sm4: sbcmulf_sqr2_hi,x stamemB } + [133] (word) mulf8u::return#0 ← *((const byte*) mulf8u::memB#0) w= *((const byte*) mulf8u::memA#0) [ mulf8u::return#0 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27::mulf8u:115 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::a#0 mulf8s::b#0 mulf8u::return#0 ] main:2::multiply_results_compare:13::mulf8u:157 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 mulf8u::return#0 ] ) + to:mulf8u::@return +mulf8u::@return: scope:[mulf8u] from mulf8u + [134] return [ mulf8u::return#0 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27::mulf8u:115 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::a#0 mulf8s::b#0 mulf8u::return#0 ] main:2::multiply_results_compare:13::mulf8u:157 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 mulf8u::return#0 ] ) to:@return -slow_signed_multiply: scope:[slow_signed_multiply] from signed_multiply_results_compare::@2 - [135] if((signed byte) slow_signed_multiply::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 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 - [136] (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/dword/signed dword) 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 ] ) - [136] (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/dword/signed dword) 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 ] ) - [137] (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 ] ) - [138] (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 ] ) - [139] 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 - [140] (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/dword/signed dword) 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 - [141] 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 ] ) +muls8s: scope:[muls8s] from signed_multiply_results_compare::@2 + [135] if((signed byte) muls8s::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls8s::@1 [ muls8s::a#0 muls8s::b#0 ] ( main:2::signed_multiply_results_compare:15::muls8s:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 muls8s::a#0 muls8s::b#0 ] ) + to:muls8s::@2 +muls8s::@2: scope:[muls8s] from muls8s muls8s::@2 + [136] (signed byte) muls8s::i#2 ← phi( muls8s::@2/(signed byte) muls8s::i#1 muls8s/(byte/signed byte/word/signed word/dword/signed dword) 0 ) [ muls8s::a#0 muls8s::b#0 muls8s::m#3 muls8s::i#2 ] ( main:2::signed_multiply_results_compare:15::muls8s:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 muls8s::a#0 muls8s::b#0 muls8s::m#3 muls8s::i#2 ] ) + [136] (signed word) muls8s::m#3 ← phi( muls8s::@2/(signed word) muls8s::m#1 muls8s/(byte/signed byte/word/signed word/dword/signed dword) 0 ) [ muls8s::a#0 muls8s::b#0 muls8s::m#3 muls8s::i#2 ] ( main:2::signed_multiply_results_compare:15::muls8s:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 muls8s::a#0 muls8s::b#0 muls8s::m#3 muls8s::i#2 ] ) + [137] (signed word) muls8s::m#1 ← (signed word) muls8s::m#3 - (signed byte) muls8s::b#0 [ muls8s::a#0 muls8s::b#0 muls8s::i#2 muls8s::m#1 ] ( main:2::signed_multiply_results_compare:15::muls8s:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 muls8s::a#0 muls8s::b#0 muls8s::i#2 muls8s::m#1 ] ) + [138] (signed byte) muls8s::i#1 ← -- (signed byte) muls8s::i#2 [ muls8s::a#0 muls8s::b#0 muls8s::m#1 muls8s::i#1 ] ( main:2::signed_multiply_results_compare:15::muls8s:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 muls8s::a#0 muls8s::b#0 muls8s::m#1 muls8s::i#1 ] ) + [139] if((signed byte) muls8s::i#1!=(signed byte) muls8s::a#0) goto muls8s::@2 [ muls8s::a#0 muls8s::b#0 muls8s::m#1 muls8s::i#1 ] ( main:2::signed_multiply_results_compare:15::muls8s:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 muls8s::a#0 muls8s::b#0 muls8s::m#1 muls8s::i#1 ] ) + to:muls8s::@3 +muls8s::@3: scope:[muls8s] from muls8s::@1 muls8s::@2 muls8s::@5 + [140] (signed word) muls8s::return#0 ← phi( muls8s::@2/(signed word) muls8s::m#1 muls8s::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 muls8s::@5/(signed word) muls8s::m#2 ) [ muls8s::return#0 ] ( main:2::signed_multiply_results_compare:15::muls8s:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 muls8s::return#0 ] ) + to:muls8s::@return +muls8s::@return: scope:[muls8s] from muls8s::@3 + [141] return [ muls8s::return#0 ] ( main:2::signed_multiply_results_compare:15::muls8s:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 muls8s::return#0 ] ) to:@return -slow_signed_multiply::@1: scope:[slow_signed_multiply] from slow_signed_multiply - [142] if((signed byte) slow_signed_multiply::a#0<=(byte/signed byte/word/signed word/dword/signed dword) 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 - [143] (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/dword/signed dword) 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 ] ) - [143] (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/dword/signed dword) 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 ] ) - [144] (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 ] ) - [145] (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 ] ) - [146] 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 +muls8s::@1: scope:[muls8s] from muls8s + [142] if((signed byte) muls8s::a#0<=(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls8s::@3 [ muls8s::a#0 muls8s::b#0 ] ( main:2::signed_multiply_results_compare:15::muls8s:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 muls8s::a#0 muls8s::b#0 ] ) + to:muls8s::@5 +muls8s::@5: scope:[muls8s] from muls8s::@1 muls8s::@5 + [143] (signed byte) muls8s::j#2 ← phi( muls8s::@5/(signed byte) muls8s::j#1 muls8s::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 ) [ muls8s::a#0 muls8s::b#0 muls8s::m#5 muls8s::j#2 ] ( main:2::signed_multiply_results_compare:15::muls8s:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 muls8s::a#0 muls8s::b#0 muls8s::m#5 muls8s::j#2 ] ) + [143] (signed word) muls8s::m#5 ← phi( muls8s::@5/(signed word) muls8s::m#2 muls8s::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 ) [ muls8s::a#0 muls8s::b#0 muls8s::m#5 muls8s::j#2 ] ( main:2::signed_multiply_results_compare:15::muls8s:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 muls8s::a#0 muls8s::b#0 muls8s::m#5 muls8s::j#2 ] ) + [144] (signed word) muls8s::m#2 ← (signed word) muls8s::m#5 + (signed byte) muls8s::b#0 [ muls8s::a#0 muls8s::b#0 muls8s::m#2 muls8s::j#2 ] ( main:2::signed_multiply_results_compare:15::muls8s:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 muls8s::a#0 muls8s::b#0 muls8s::m#2 muls8s::j#2 ] ) + [145] (signed byte) muls8s::j#1 ← ++ (signed byte) muls8s::j#2 [ muls8s::a#0 muls8s::b#0 muls8s::m#2 muls8s::j#1 ] ( main:2::signed_multiply_results_compare:15::muls8s:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 muls8s::a#0 muls8s::b#0 muls8s::m#2 muls8s::j#1 ] ) + [146] if((signed byte) muls8s::j#1!=(signed byte) muls8s::a#0) goto muls8s::@5 [ muls8s::a#0 muls8s::b#0 muls8s::m#2 muls8s::j#1 ] ( main:2::signed_multiply_results_compare:15::muls8s:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 muls8s::a#0 muls8s::b#0 muls8s::m#2 muls8s::j#1 ] ) + to:muls8s::@3 multiply_results_compare: scope:[multiply_results_compare] from main::@4 [147] phi() [ line_cursor#10 char_cursor#30 ] ( main:2::multiply_results_compare:13 [ line_cursor#10 char_cursor#30 ] ) to:multiply_results_compare::@1 @@ -305,20 +305,20 @@ multiply_results_compare::@1: scope:[multiply_results_compare] from multiply_re to:multiply_results_compare::@2 multiply_results_compare::@2: scope:[multiply_results_compare] from multiply_results_compare::@1 multiply_results_compare::@3 [149] (byte) multiply_results_compare::b#2 ← phi( multiply_results_compare::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 multiply_results_compare::@3/(byte) multiply_results_compare::b#1 ) [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 ] ( main:2::multiply_results_compare:13 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 ] ) - [150] (byte) slow_multiply::a#0 ← (byte) multiply_results_compare::a#6 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::a#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::a#0 ] ) - [151] (byte) slow_multiply::b#0 ← (byte) multiply_results_compare::b#2 [ line_cursor#10 char_cursor#30 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#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::a#0 slow_multiply::b#0 ] ) - [152] call slow_multiply param-assignment [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::return#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::return#0 ] ) - [153] (word) slow_multiply::return#2 ← (word) slow_multiply::return#0 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::return#2 ] ( main:2::multiply_results_compare:13 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::return#2 ] ) + [150] (byte) muls8u::a#0 ← (byte) multiply_results_compare::a#6 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 muls8u::a#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 muls8u::a#0 ] ) + [151] (byte) muls8u::b#0 ← (byte) multiply_results_compare::b#2 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 muls8u::a#0 muls8u::b#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 muls8u::a#0 muls8u::b#0 ] ) + [152] call muls8u param-assignment [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 muls8u::return#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 muls8u::return#0 ] ) + [153] (word) muls8u::return#2 ← (word) muls8u::return#0 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 muls8u::return#2 ] ( main:2::multiply_results_compare:13 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 muls8u::return#2 ] ) to:multiply_results_compare::@8 multiply_results_compare::@8: scope:[multiply_results_compare] from multiply_results_compare::@2 - [154] (word) multiply_results_compare::ms#0 ← (word) slow_multiply::return#2 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ) - [155] (byte) multiply::a#1 ← (byte) multiply_results_compare::a#6 [ line_cursor#10 char_cursor#30 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#10 char_cursor#30 multiply::a#1 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ) - [156] (byte) multiply::b#1 ← (byte) multiply_results_compare::b#2 [ line_cursor#10 char_cursor#30 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#10 char_cursor#30 multiply::a#1 multiply::b#1 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ) - [157] call multiply param-assignment [ line_cursor#10 char_cursor#30 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#10 char_cursor#30 multiply::return#0 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ) - [158] (word) multiply::return#3 ← (word) multiply::return#0 [ line_cursor#10 char_cursor#30 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#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply::return#3 ] ) + [154] (word) multiply_results_compare::ms#0 ← (word) muls8u::return#2 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ) + [155] (byte) mulf8u::a#1 ← (byte) multiply_results_compare::a#6 [ line_cursor#10 char_cursor#30 mulf8u::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#10 char_cursor#30 mulf8u::a#1 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ) + [156] (byte) mulf8u::b#1 ← (byte) multiply_results_compare::b#2 [ line_cursor#10 char_cursor#30 mulf8u::a#1 mulf8u::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#10 char_cursor#30 mulf8u::a#1 mulf8u::b#1 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ) + [157] call mulf8u param-assignment [ line_cursor#10 char_cursor#30 mulf8u::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#10 char_cursor#30 mulf8u::return#0 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ) + [158] (word) mulf8u::return#3 ← (word) mulf8u::return#0 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 mulf8u::return#3 ] ( main:2::multiply_results_compare:13 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 mulf8u::return#3 ] ) to:multiply_results_compare::@9 multiply_results_compare::@9: scope:[multiply_results_compare] from multiply_results_compare::@8 - [159] (word) multiply_results_compare::ma#0 ← (word) multiply::return#3 [ line_cursor#10 char_cursor#30 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#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply_results_compare::ma#0 ] ) + [159] (word) multiply_results_compare::ma#0 ← (word) mulf8u::return#3 [ line_cursor#10 char_cursor#30 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#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply_results_compare::ma#0 ] ) [160] if((word) multiply_results_compare::ms#0==(word) multiply_results_compare::ma#0) goto multiply_results_compare::@3 [ line_cursor#10 char_cursor#30 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#10 char_cursor#30 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 @@ -387,28 +387,28 @@ multiply_error::@8: scope:[multiply_error] from multiply_error::@7 multiply_error::@return: scope:[multiply_error] from multiply_error::@8 [194] return [ line_cursor#1 ] ( main:2::multiply_results_compare:13::multiply_error:166 [ line_cursor#1 ] ) to:@return -slow_multiply: scope:[slow_multiply] from multiply_results_compare::@2 - [195] if((byte) slow_multiply::a#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto slow_multiply::@1 [ slow_multiply::a#0 slow_multiply::b#0 ] ( main:2::multiply_results_compare:13::slow_multiply:152 [ line_cursor#10 char_cursor#30 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 - [196] (byte) slow_multiply::i#2 ← phi( slow_multiply::@2/(byte) slow_multiply::i#1 slow_multiply/(byte/signed byte/word/signed word/dword/signed dword) 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:152 [ line_cursor#10 char_cursor#30 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 ] ) - [196] (word) slow_multiply::m#3 ← phi( slow_multiply::@2/(word) slow_multiply::m#1 slow_multiply/(byte/signed byte/word/signed word/dword/signed dword) 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:152 [ line_cursor#10 char_cursor#30 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 ] ) - [197] (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:152 [ line_cursor#10 char_cursor#30 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 ] ) - [198] (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:152 [ line_cursor#10 char_cursor#30 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 ] ) - [199] 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:152 [ line_cursor#10 char_cursor#30 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 - [200] (word) slow_multiply::return#0 ← phi( slow_multiply/(byte/signed byte/word/signed word/dword/signed dword) 0 slow_multiply::@2/(word) slow_multiply::m#1 ) [ slow_multiply::return#0 ] ( main:2::multiply_results_compare:13::slow_multiply:152 [ line_cursor#10 char_cursor#30 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 - [201] return [ slow_multiply::return#0 ] ( main:2::multiply_results_compare:13::slow_multiply:152 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::return#0 ] ) +muls8u: scope:[muls8u] from multiply_results_compare::@2 + [195] if((byte) muls8u::a#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls8u::@1 [ muls8u::a#0 muls8u::b#0 ] ( main:2::multiply_results_compare:13::muls8u:152 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 muls8u::a#0 muls8u::b#0 ] ) + to:muls8u::@2 +muls8u::@2: scope:[muls8u] from muls8u muls8u::@2 + [196] (byte) muls8u::i#2 ← phi( muls8u::@2/(byte) muls8u::i#1 muls8u/(byte/signed byte/word/signed word/dword/signed dword) 0 ) [ muls8u::a#0 muls8u::b#0 muls8u::m#3 muls8u::i#2 ] ( main:2::multiply_results_compare:13::muls8u:152 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 muls8u::a#0 muls8u::b#0 muls8u::m#3 muls8u::i#2 ] ) + [196] (word) muls8u::m#3 ← phi( muls8u::@2/(word) muls8u::m#1 muls8u/(byte/signed byte/word/signed word/dword/signed dword) 0 ) [ muls8u::a#0 muls8u::b#0 muls8u::m#3 muls8u::i#2 ] ( main:2::multiply_results_compare:13::muls8u:152 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 muls8u::a#0 muls8u::b#0 muls8u::m#3 muls8u::i#2 ] ) + [197] (word) muls8u::m#1 ← (word) muls8u::m#3 + (byte) muls8u::b#0 [ muls8u::a#0 muls8u::b#0 muls8u::i#2 muls8u::m#1 ] ( main:2::multiply_results_compare:13::muls8u:152 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 muls8u::a#0 muls8u::b#0 muls8u::i#2 muls8u::m#1 ] ) + [198] (byte) muls8u::i#1 ← ++ (byte) muls8u::i#2 [ muls8u::a#0 muls8u::b#0 muls8u::m#1 muls8u::i#1 ] ( main:2::multiply_results_compare:13::muls8u:152 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 muls8u::a#0 muls8u::b#0 muls8u::m#1 muls8u::i#1 ] ) + [199] if((byte) muls8u::i#1!=(byte) muls8u::a#0) goto muls8u::@2 [ muls8u::a#0 muls8u::b#0 muls8u::m#1 muls8u::i#1 ] ( main:2::multiply_results_compare:13::muls8u:152 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 muls8u::a#0 muls8u::b#0 muls8u::m#1 muls8u::i#1 ] ) + to:muls8u::@1 +muls8u::@1: scope:[muls8u] from muls8u muls8u::@2 + [200] (word) muls8u::return#0 ← phi( muls8u/(byte/signed byte/word/signed word/dword/signed dword) 0 muls8u::@2/(word) muls8u::m#1 ) [ muls8u::return#0 ] ( main:2::multiply_results_compare:13::muls8u:152 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 muls8u::return#0 ] ) + to:muls8u::@return +muls8u::@return: scope:[muls8u] from muls8u::@1 + [201] return [ muls8u::return#0 ] ( main:2::multiply_results_compare:13::muls8u:152 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 muls8u::return#0 ] ) to:@return multiply_tables_compare: scope:[multiply_tables_compare] from main::@3 [202] 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 - [203] (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 ] ) - [203] (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 ] ) + [203] (byte*) multiply_tables_compare::asm_sqr#2 ← phi( multiply_tables_compare/(const byte[512]) mula_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 ] ) + [203] (byte*) multiply_tables_compare::kc_sqr#2 ← phi( multiply_tables_compare/(const byte[512]) mulf_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 ] ) [204] 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 @@ -435,7 +435,7 @@ multiply_tables_compare::@return: scope:[multiply_tables_compare] from multiply multiply_tables_compare::@2: scope:[multiply_tables_compare] from multiply_tables_compare::@1 [215] (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 ] ) [216] (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 ] ) - [217] if((byte*) multiply_tables_compare::kc_sqr#1<(const byte[512]) mul_sqr1_lo#0+(word/signed word/dword/signed dword) 512*(byte/signed byte/word/signed word/dword/signed dword) 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 ] ) + [217] if((byte*) multiply_tables_compare::kc_sqr#1<(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512*(byte/signed byte/word/signed word/dword/signed dword) 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 [218] phi() [ ] ( main:2::multiply_tables_compare:11 [ ] ) @@ -446,71 +446,71 @@ multiply_tables_compare::@10: scope:[multiply_tables_compare] from multiply_tab [221] call print_ln param-assignment [ line_cursor#1 ] ( main:2::multiply_tables_compare:11 [ line_cursor#1 ] ) [222] (byte*~) char_cursor#201 ← (byte*) line_cursor#1 [ line_cursor#1 char_cursor#201 ] ( main:2::multiply_tables_compare:11 [ line_cursor#1 char_cursor#201 ] ) to:multiply_tables_compare::@return -init_multiply_asm: scope:[init_multiply_asm] from main::@2 - asm { ldx#$00 txa .byte$c9 lb1: tya adc#$00 ml1: staasm_mul_sqr1_hi,x tay cmp#$40 txa ror ml9: adc#$00 staml9+1 inx ml0: staasm_mul_sqr1_lo,x bnelb1 incml0+2 incml1+2 clc iny bnelb1 ldx#$00 ldy#$ff !: ldaasm_mul_sqr1_hi+1,x staasm_mul_sqr2_hi+$100,x ldaasm_mul_sqr1_hi,x staasm_mul_sqr2_hi,y ldaasm_mul_sqr1_lo+1,x staasm_mul_sqr2_lo+$100,x ldaasm_mul_sqr1_lo,x staasm_mul_sqr2_lo,y dey inx bne!- } - [224] *((const byte*) init_multiply_asm::mem#0) ← *((const byte[512]) asm_mul_sqr1_lo#0) [ ] ( main:2::init_multiply_asm:9 [ ] ) - [225] *((const byte*) init_multiply_asm::mem#0) ← *((const byte[512]) asm_mul_sqr1_hi#0) [ ] ( main:2::init_multiply_asm:9 [ ] ) - [226] *((const byte*) init_multiply_asm::mem#0) ← *((const byte[512]) asm_mul_sqr2_lo#0) [ ] ( main:2::init_multiply_asm:9 [ ] ) - [227] *((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 - [228] return [ ] ( main:2::init_multiply_asm:9 [ ] ) +mulf_init_asm: scope:[mulf_init_asm] from main::@2 + asm { ldx#$00 txa .byte$c9 lb1: tya adc#$00 ml1: stamula_sqr1_hi,x tay cmp#$40 txa ror ml9: adc#$00 staml9+1 inx ml0: stamula_sqr1_lo,x bnelb1 incml0+2 incml1+2 clc iny bnelb1 ldx#$00 ldy#$ff !: ldamula_sqr1_hi+1,x stamula_sqr2_hi+$100,x ldamula_sqr1_hi,x stamula_sqr2_hi,y ldamula_sqr1_lo+1,x stamula_sqr2_lo+$100,x ldamula_sqr1_lo,x stamula_sqr2_lo,y dey inx bne!- } + [224] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr1_lo#0) [ ] ( main:2::mulf_init_asm:9 [ ] ) + [225] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr1_hi#0) [ ] ( main:2::mulf_init_asm:9 [ ] ) + [226] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr2_lo#0) [ ] ( main:2::mulf_init_asm:9 [ ] ) + [227] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr2_hi#0) [ ] ( main:2::mulf_init_asm:9 [ ] ) + to:mulf_init_asm::@return +mulf_init_asm::@return: scope:[mulf_init_asm] from mulf_init_asm + [228] return [ ] ( main:2::mulf_init_asm:9 [ ] ) to:@return -init_multiply: scope:[init_multiply] from main::@1 - [229] phi() [ ] ( main:2::init_multiply:7 [ ] ) - to:init_multiply::@1 -init_multiply::@1: scope:[init_multiply] from init_multiply init_multiply::@2 - [230] (byte) init_multiply::x_2#3 ← phi( init_multiply/(byte/signed byte/word/signed word/dword/signed dword) 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 ] ) - [230] (byte*) init_multiply::sqr1_hi#2 ← phi( init_multiply/(const byte[512]) mul_sqr1_hi#0+(byte/signed byte/word/signed word/dword/signed dword) 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 ] ) - [230] (byte*) init_multiply::sqr1_lo#2 ← phi( init_multiply/(const byte[512]) mul_sqr1_lo#0+(byte/signed byte/word/signed word/dword/signed dword) 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 ] ) - [230] (word) init_multiply::sqr#4 ← phi( init_multiply/(byte/signed byte/word/signed word/dword/signed dword) 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 ] ) - [230] (byte) init_multiply::c#2 ← phi( init_multiply/(byte/signed byte/word/signed word/dword/signed dword) 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 ] ) - [231] (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 ] ) - [232] (byte~) init_multiply::$2 ← (byte) init_multiply::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 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 ] ) - [233] if((byte~) init_multiply::$2!=(byte/signed byte/word/signed word/dword/signed dword) 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 - [234] (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 ] ) - [235] (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 - [236] (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 ] ) - [236] (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 ] ) - [237] (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 ] ) - [238] *((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 ] ) - [239] (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 ] ) - [240] *((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 ] ) - [241] (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 ] ) - [242] (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 ] ) - [243] (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 ] ) - [244] if((byte*) init_multiply::sqr1_lo#1!=(const byte[512]) mul_sqr1_lo#0+(word/signed word/dword/signed dword) 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 - [245] (byte) init_multiply::dir#2 ← phi( init_multiply::@4/(byte) init_multiply::dir#3 init_multiply::@2/(byte/word/signed word/dword/signed dword) 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 ] ) - [245] (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 ] ) - [245] (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 ] ) - [245] (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/dword/signed dword) 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 ] ) - [246] *((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 ] ) - [247] *((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 ] ) - [248] (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 ] ) - [249] (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 ] ) - [250] if((byte) init_multiply::x_255#1!=(byte/signed byte/word/signed word/dword/signed dword) 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 - [251] (byte) init_multiply::dir#3 ← phi( init_multiply::@12/(byte) init_multiply::dir#2 init_multiply::@3/(byte/signed byte/word/signed word/dword/signed dword) 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 ] ) - [252] (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 ] ) - [253] if((byte*) init_multiply::sqr2_lo#1!=(const byte[512]) mul_sqr2_lo#0+(word/signed word/dword/signed dword) 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 - [254] *((const byte[512]) mul_sqr2_lo#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mul_sqr1_lo#0+(word/signed word/dword/signed dword) 256) [ ] ( main:2::init_multiply:7 [ ] ) - [255] *((const byte[512]) mul_sqr2_hi#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mul_sqr1_hi#0+(word/signed word/dword/signed dword) 256) [ ] ( main:2::init_multiply:7 [ ] ) - to:init_multiply::@return -init_multiply::@return: scope:[init_multiply] from init_multiply::@8 - [256] return [ ] ( main:2::init_multiply:7 [ ] ) +mulf_init: scope:[mulf_init] from main::@1 + [229] phi() [ ] ( main:2::mulf_init:7 [ ] ) + to:mulf_init::@1 +mulf_init::@1: scope:[mulf_init] from mulf_init mulf_init::@2 + [230] (byte) mulf_init::x_2#3 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 0 mulf_init::@2/(byte) mulf_init::x_2#2 ) [ mulf_init::c#2 mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 ] ( main:2::mulf_init:7 [ mulf_init::c#2 mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 ] ) + [230] (byte*) mulf_init::sqr1_hi#2 ← phi( mulf_init/(const byte[512]) mulf_sqr1_hi#0+(byte/signed byte/word/signed word/dword/signed dword) 1 mulf_init::@2/(byte*) mulf_init::sqr1_hi#1 ) [ mulf_init::c#2 mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 ] ( main:2::mulf_init:7 [ mulf_init::c#2 mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 ] ) + [230] (byte*) mulf_init::sqr1_lo#2 ← phi( mulf_init/(const byte[512]) mulf_sqr1_lo#0+(byte/signed byte/word/signed word/dword/signed dword) 1 mulf_init::@2/(byte*) mulf_init::sqr1_lo#1 ) [ mulf_init::c#2 mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 ] ( main:2::mulf_init:7 [ mulf_init::c#2 mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 ] ) + [230] (word) mulf_init::sqr#4 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 0 mulf_init::@2/(word) mulf_init::sqr#1 ) [ mulf_init::c#2 mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 ] ( main:2::mulf_init:7 [ mulf_init::c#2 mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 ] ) + [230] (byte) mulf_init::c#2 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 0 mulf_init::@2/(byte) mulf_init::c#1 ) [ mulf_init::c#2 mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 ] ( main:2::mulf_init:7 [ mulf_init::c#2 mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 ] ) + [231] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 [ mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 ] ( main:2::mulf_init:7 [ mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 ] ) + [232] (byte~) mulf_init::$2 ← (byte) mulf_init::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 1 [ mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$2 ] ( main:2::mulf_init:7 [ mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$2 ] ) + [233] if((byte~) mulf_init::$2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@2 [ mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 ] ( main:2::mulf_init:7 [ mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 ] ) + to:mulf_init::@5 +mulf_init::@5: scope:[mulf_init] from mulf_init::@1 + [234] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 [ mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#1 ] ( main:2::mulf_init:7 [ mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#1 ] ) + [235] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#1 mulf_init::sqr#2 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#1 mulf_init::sqr#2 ] ) + to:mulf_init::@2 +mulf_init::@2: scope:[mulf_init] from mulf_init::@1 mulf_init::@5 + [236] (byte) mulf_init::x_2#2 ← phi( mulf_init::@1/(byte) mulf_init::x_2#3 mulf_init::@5/(byte) mulf_init::x_2#1 ) [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ) + [236] (word) mulf_init::sqr#3 ← phi( mulf_init::@1/(word) mulf_init::sqr#4 mulf_init::@5/(word) mulf_init::sqr#2 ) [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ) + [237] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$5 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$5 ] ) + [238] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ) + [239] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$6 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$6 ] ) + [240] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ) + [241] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ) + [242] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ) + [243] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 [ mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_lo#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ( main:2::mulf_init:7 [ mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_lo#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ) + [244] if((byte*) mulf_init::sqr1_lo#1!=(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512) goto mulf_init::@1 [ mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_lo#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ( main:2::mulf_init:7 [ mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_lo#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ) + to:mulf_init::@3 +mulf_init::@3: scope:[mulf_init] from mulf_init::@2 mulf_init::@4 + [245] (byte) mulf_init::dir#2 ← phi( mulf_init::@4/(byte) mulf_init::dir#3 mulf_init::@2/(byte/word/signed word/dword/signed dword) 255 ) [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) + [245] (byte*) mulf_init::sqr2_hi#2 ← phi( mulf_init::@4/(byte*) mulf_init::sqr2_hi#1 mulf_init::@2/(const byte[512]) mulf_sqr2_hi#0 ) [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) + [245] (byte*) mulf_init::sqr2_lo#2 ← phi( mulf_init::@4/(byte*) mulf_init::sqr2_lo#1 mulf_init::@2/(const byte[512]) mulf_sqr2_lo#0 ) [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) + [245] (byte) mulf_init::x_255#2 ← phi( mulf_init::@4/(byte) mulf_init::x_255#1 mulf_init::@2/((byte))-(byte/signed byte/word/signed word/dword/signed dword) 1 ) [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) + [246] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[512]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) + [247] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[512]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) + [248] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::sqr2_hi#1 ] ( main:2::mulf_init:7 [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::sqr2_hi#1 ] ) + [249] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ( main:2::mulf_init:7 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ) + [250] if((byte) mulf_init::x_255#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@12 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ( main:2::mulf_init:7 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ) + to:mulf_init::@4 +mulf_init::@4: scope:[mulf_init] from mulf_init::@12 mulf_init::@3 + [251] (byte) mulf_init::dir#3 ← phi( mulf_init::@12/(byte) mulf_init::dir#2 mulf_init::@3/(byte/signed byte/word/signed word/dword/signed dword) 1 ) [ mulf_init::sqr2_lo#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 mulf_init::dir#3 ] ( main:2::mulf_init:7 [ mulf_init::sqr2_lo#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 mulf_init::dir#3 ] ) + [252] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 [ mulf_init::x_255#1 mulf_init::sqr2_lo#1 mulf_init::sqr2_hi#1 mulf_init::dir#3 ] ( main:2::mulf_init:7 [ mulf_init::x_255#1 mulf_init::sqr2_lo#1 mulf_init::sqr2_hi#1 mulf_init::dir#3 ] ) + [253] if((byte*) mulf_init::sqr2_lo#1!=(const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) goto mulf_init::@3 [ mulf_init::x_255#1 mulf_init::sqr2_lo#1 mulf_init::sqr2_hi#1 mulf_init::dir#3 ] ( main:2::mulf_init:7 [ mulf_init::x_255#1 mulf_init::sqr2_lo#1 mulf_init::sqr2_hi#1 mulf_init::dir#3 ] ) + to:mulf_init::@8 +mulf_init::@8: scope:[mulf_init] from mulf_init::@4 + [254] *((const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 256) [ ] ( main:2::mulf_init:7 [ ] ) + [255] *((const byte[512]) mulf_sqr2_hi#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_hi#0+(word/signed word/dword/signed dword) 256) [ ] ( main:2::mulf_init:7 [ ] ) + to:mulf_init::@return +mulf_init::@return: scope:[mulf_init] from mulf_init::@8 + [256] return [ ] ( main:2::mulf_init:7 [ ] ) to:@return -init_multiply::@12: scope:[init_multiply] from init_multiply::@3 - [257] 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 +mulf_init::@12: scope:[mulf_init] from mulf_init::@3 + [257] phi() [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ( main:2::mulf_init:7 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ) + to:mulf_init::@4 print_cls: scope:[print_cls] from main [258] phi() [ ] ( main:2::print_cls:5 [ ] ) to:print_cls::@1 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 774f23a7a..95933cd2c 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 @@ -1,22 +1,23 @@ PARSING src/test/java/dk/camelot64/kickc/test/kc/test-multiply.kc // Test the fast multiplication library import "print.kc" -import "multiply.kc" +import "fastmultiply.kc" byte* BGCOL = $d021; void main() { *BGCOL = 5; print_cls(); - init_multiply(); - init_multiply_asm(); + mulf_init(); + mulf_init_asm(); multiply_tables_compare(); multiply_results_compare(); signed_multiply_results_compare(); } +// Slow multiplication of unsigned bytes // Calculate an unsigned multiplication by repeated addition -word slow_multiply(byte a, byte b) { +word muls8u(byte a, byte b) { word m = 0; if(a!=0) { for(byte i = 0; i!=a; i++) { @@ -26,8 +27,9 @@ word slow_multiply(byte a, byte b) { return m; } +// Slow multiplication of signed bytes // Perform a signed multiplication by repeated addition/ -signed word slow_signed_multiply(signed byte a, signed byte b) { +signed word muls8s(signed byte a, signed byte b) { signed word m = 0; if(a<0) { for(signed byte i = 0; i!=a; i--) { @@ -43,16 +45,16 @@ signed word slow_signed_multiply(signed byte a, signed byte b) { // ASM based multiplication tables // <(( x * x )/4) -byte[512] align($100) asm_mul_sqr1_lo; +byte[512] align($100) mula_sqr1_lo; // >(( x * x )/4) -byte[512] align($100) asm_mul_sqr1_hi; +byte[512] align($100) mula_sqr1_hi; // <((( x - 255) * ( x - 255 ))/4) -byte[512] align($100) asm_mul_sqr2_lo; +byte[512] align($100) mula_sqr2_lo; // >((( x - 255) * ( x - 255 ))/4) -byte[512] align($100) asm_mul_sqr2_hi; +byte[512] align($100) mula_sqr2_hi; // Initialize the multiplication tables using ASM code from // http://codebase64.org/doku.php?id=base:seriously_fast_multiplication -void init_multiply_asm() { +void mulf_init_asm() { asm{ ldx #$00 txa @@ -61,7 +63,7 @@ void init_multiply_asm() { tya adc #$00 ml1: - sta asm_mul_sqr1_hi,x + sta mula_sqr1_hi,x tay cmp #$40 txa @@ -71,7 +73,7 @@ void init_multiply_asm() { sta ml9+1 inx ml0: - sta asm_mul_sqr1_lo,x + sta mula_sqr1_lo,x bne lb1 inc ml0+2 inc ml1+2 @@ -81,31 +83,31 @@ void init_multiply_asm() { ldx #$00 ldy #$ff !: - lda asm_mul_sqr1_hi+1,x - sta asm_mul_sqr2_hi+$100,x - lda asm_mul_sqr1_hi,x - sta asm_mul_sqr2_hi,y - lda asm_mul_sqr1_lo+1,x - sta asm_mul_sqr2_lo+$100,x - lda asm_mul_sqr1_lo,x - sta asm_mul_sqr2_lo,y + lda mula_sqr1_hi+1,x + sta mula_sqr2_hi+$100,x + lda mula_sqr1_hi,x + sta mula_sqr2_hi,y + lda mula_sqr1_lo+1,x + sta mula_sqr2_lo+$100,x + lda mula_sqr1_lo,x + sta mula_sqr2_lo,y dey inx bne !- } // Ensure the ASM tables are not detected as unused by the optimizer byte* mem = $ff; - *mem = *asm_mul_sqr1_lo; - *mem = *asm_mul_sqr1_hi; - *mem = *asm_mul_sqr2_lo; - *mem = *asm_mul_sqr2_hi; + *mem = *mula_sqr1_lo; + *mem = *mula_sqr1_hi; + *mem = *mula_sqr2_lo; + *mem = *mula_sqr2_hi; } // Compare the ASM-based mul tables with the KC-based mul tables // Red screen on failure - green on success void multiply_tables_compare() { - byte* asm_sqr = asm_mul_sqr1_lo; - for( byte* kc_sqr=mul_sqr1_lo; kc_sqrf(x) = >(( x * x )/4) -byte[512] align($100) mul_sqr1_hi; +byte[512] align($100) mulf_sqr1_hi; // g(x) = >((( x - 255) * ( x - 255 ))/4) -byte[512] align($100) mul_sqr2_hi; +byte[512] align($100) mulf_sqr2_hi; -// Initialize the mul_sqr multiplication tables with f(x)=int(x*x/4) -void init_multiply() { - // Fill mul_sqr1 = f(x) = int(x*x/4): If f(x) = x*x/4 then f(x+1) = f(x) + x/2 + 1/4 +// Initialize the mulf_sqr multiplication tables with f(x)=int(x*x/4) +void mulf_init() { + // Fill mulf_sqr1 = f(x) = int(x*x/4): If f(x) = x*x/4 then f(x+1) = f(x) + x/2 + 1/4 word sqr = 0; // sqr = (x*x)/4 byte x_2 = 0; // x/2 byte c = 0; // Counter used for determining x%2==0 - byte* sqr1_hi = mul_sqr1_hi+1; - for(byte* sqr1_lo = mul_sqr1_lo+1; sqr1_lo!=mul_sqr1_lo+512; sqr1_lo++) { + byte* sqr1_hi = mulf_sqr1_hi+1; + for(byte* sqr1_lo = mulf_sqr1_lo+1; sqr1_lo!=mulf_sqr1_lo+512; sqr1_lo++) { if((++c&1)==0) { x_2++; // increase i/2 on even numbers sqr++; // sqr++ on even numbers because 1 = 2*1/4 (from the two previous numbers) + 1/2 (half of the previous uneven number) @@ -285,27 +287,27 @@ void init_multiply() { *sqr1_hi++ = >sqr; sqr = sqr + x_2; // sqr = sqr + i/2 (when uneven the 1/2 is not added here - see above) } - // Fill mul_sqr2 = g(x) = f(x-255) : If x-255<0 then g(x)=f(255-x) (because x*x = -x*-x) + // Fill mulf_sqr2 = g(x) = f(x-255) : If x-255<0 then g(x)=f(255-x) (because x*x = -x*-x) // g(0) = f(255), g(1) = f(254), ..., g(254) = f(1), g(255) = f(0), g(256) = f(1), ..., g(510) = f(255), g(511) = f(256) byte x_255 = (byte)-1; //Start with g(0)=f(255) byte dir = $ff; // Decrease or increase x_255 - initially we decrease - byte* sqr2_hi = mul_sqr2_hi; - for(byte* sqr2_lo = mul_sqr2_lo; sqr2_lo!=mul_sqr2_lo+511; sqr2_lo++) { - *sqr2_lo = mul_sqr1_lo[x_255]; - *sqr2_hi++ = mul_sqr1_hi[x_255]; + byte* sqr2_hi = mulf_sqr2_hi; + for(byte* sqr2_lo = mulf_sqr2_lo; sqr2_lo!=mulf_sqr2_lo+511; sqr2_lo++) { + *sqr2_lo = mulf_sqr1_lo[x_255]; + *sqr2_hi++ = mulf_sqr1_hi[x_255]; x_255 = x_255 + dir; if(x_255==0) { dir = 1; // when x_255=0 then start counting up } } // Set the very last value g(511) = f(256) - *(mul_sqr2_lo+511) = *(mul_sqr1_lo+256); - *(mul_sqr2_hi+511) = *(mul_sqr1_hi+256); + *(mulf_sqr2_lo+511) = *(mulf_sqr1_lo+256); + *(mulf_sqr2_hi+511) = *(mulf_sqr1_hi+256); } // Fast multiply two unsigned bytes to a word result // Done in assembler to utilize fast addition A+X -word multiply(byte a, byte b) { +word mulf8u(byte a, byte b) { const byte* memA = $fe; const byte* memB = $ff; *memA = a; @@ -320,14 +322,14 @@ word multiply(byte a, byte b) { ldx memB sec sm1: - lda mul_sqr1_lo,x + lda mulf_sqr1_lo,x sm2: - sbc mul_sqr2_lo,x + sbc mulf_sqr2_lo,x sta memA sm3: - lda mul_sqr1_hi,x + lda mulf_sqr1_hi,x sm4: - sbc mul_sqr2_hi,x + sbc mulf_sqr2_hi,x sta memB } return { *memB, *memA }; @@ -335,8 +337,8 @@ word multiply(byte a, byte b) { // 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); +signed word mulf8s(signed byte a, signed byte b) { + word m = mulf8u((byte)a, (byte) b); if(a<0) { >m = (>m)-(byte)b; } @@ -345,16 +347,16 @@ signed word signed_multiply(signed byte a, signed byte b) { } 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 -Adding pre/post-modifier (byte*) init_multiply::sqr1_hi ← ++ (byte*) init_multiply::sqr1_hi -Adding pre/post-modifier (byte*) init_multiply::sqr1_lo ← ++ (byte*) init_multiply::sqr1_lo -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) mulf_init::c ← ++ (byte) mulf_init::c +Adding pre/post-modifier (byte) mulf_init::x_2 ← ++ (byte) mulf_init::x_2 +Adding pre/post-modifier (word) mulf_init::sqr ← ++ (word) mulf_init::sqr +Adding pre/post-modifier (byte*) mulf_init::sqr1_hi ← ++ (byte*) mulf_init::sqr1_hi +Adding pre/post-modifier (byte*) mulf_init::sqr1_lo ← ++ (byte*) mulf_init::sqr1_lo +Adding pre/post-modifier (byte*) mulf_init::sqr2_hi ← ++ (byte*) mulf_init::sqr2_hi +Adding pre/post-modifier (byte*) mulf_init::sqr2_lo ← ++ (byte*) mulf_init::sqr2_lo +Adding pre/post-modifier (byte) muls8u::i ← ++ (byte) muls8u::i +Adding pre/post-modifier (signed byte) muls8s::i ← -- (signed byte) muls8s::i +Adding pre/post-modifier (signed byte) muls8s::j ← ++ (signed byte) muls8s::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 @@ -450,190 +452,190 @@ print_cls::@1: print_cls::@return: return endproc // print_cls() - (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) } -proc (void()) init_multiply() - (word) init_multiply::sqr ← (byte/signed byte/word/signed word/dword/signed dword) 0 - (byte) init_multiply::x_2 ← (byte/signed byte/word/signed word/dword/signed dword) 0 - (byte) init_multiply::c ← (byte/signed byte/word/signed word/dword/signed dword) 0 - (byte*~) init_multiply::$0 ← (byte[512]) mul_sqr1_hi + (byte/signed byte/word/signed word/dword/signed dword) 1 - (byte*) init_multiply::sqr1_hi ← (byte*~) init_multiply::$0 - (byte*~) init_multiply::$1 ← (byte[512]) mul_sqr1_lo + (byte/signed byte/word/signed word/dword/signed dword) 1 - (byte*) init_multiply::sqr1_lo ← (byte*~) init_multiply::$1 -init_multiply::@1: - (byte) init_multiply::c ← ++ (byte) init_multiply::c - (byte~) init_multiply::$2 ← (byte) init_multiply::c & (byte/signed byte/word/signed word/dword/signed dword) 1 - (boolean~) init_multiply::$3 ← (byte~) init_multiply::$2 == (byte/signed byte/word/signed word/dword/signed dword) 0 - (boolean~) init_multiply::$4 ← ! (boolean~) init_multiply::$3 - if((boolean~) init_multiply::$4) goto init_multiply::@2 - (byte) init_multiply::x_2 ← ++ (byte) init_multiply::x_2 - (word) init_multiply::sqr ← ++ (word) init_multiply::sqr -init_multiply::@2: - (byte~) init_multiply::$5 ← < (word) init_multiply::sqr - *((byte*) init_multiply::sqr1_lo) ← (byte~) init_multiply::$5 - (byte~) init_multiply::$6 ← > (word) init_multiply::sqr - *((byte*) init_multiply::sqr1_hi) ← (byte~) init_multiply::$6 - (byte*) init_multiply::sqr1_hi ← ++ (byte*) init_multiply::sqr1_hi - (word~) init_multiply::$7 ← (word) init_multiply::sqr + (byte) init_multiply::x_2 - (word) init_multiply::sqr ← (word~) init_multiply::$7 - (byte*) init_multiply::sqr1_lo ← ++ (byte*) init_multiply::sqr1_lo - (byte*~) init_multiply::$8 ← (byte[512]) mul_sqr1_lo + (word/signed word/dword/signed dword) 512 - (boolean~) init_multiply::$9 ← (byte*) init_multiply::sqr1_lo != (byte*~) init_multiply::$8 - if((boolean~) init_multiply::$9) goto init_multiply::@1 - (signed byte/signed word/signed dword~) init_multiply::$10 ← - (byte/signed byte/word/signed word/dword/signed dword) 1 - (byte~) init_multiply::$11 ← ((byte)) (signed byte/signed word/signed dword~) init_multiply::$10 - (byte) init_multiply::x_255 ← (byte~) init_multiply::$11 - (byte) init_multiply::dir ← (byte/word/signed word/dword/signed dword) 255 - (byte*) init_multiply::sqr2_hi ← (byte[512]) mul_sqr2_hi - (byte*) init_multiply::sqr2_lo ← (byte[512]) mul_sqr2_lo -init_multiply::@3: - *((byte*) init_multiply::sqr2_lo) ← *((byte[512]) mul_sqr1_lo + (byte) init_multiply::x_255) - *((byte*) init_multiply::sqr2_hi) ← *((byte[512]) mul_sqr1_hi + (byte) init_multiply::x_255) - (byte*) init_multiply::sqr2_hi ← ++ (byte*) init_multiply::sqr2_hi - (byte/word~) init_multiply::$12 ← (byte) init_multiply::x_255 + (byte) init_multiply::dir - (byte) init_multiply::x_255 ← (byte/word~) init_multiply::$12 - (boolean~) init_multiply::$13 ← (byte) init_multiply::x_255 == (byte/signed byte/word/signed word/dword/signed dword) 0 - (boolean~) init_multiply::$14 ← ! (boolean~) init_multiply::$13 - if((boolean~) init_multiply::$14) goto init_multiply::@4 - (byte) init_multiply::dir ← (byte/signed byte/word/signed word/dword/signed dword) 1 -init_multiply::@4: - (byte*) init_multiply::sqr2_lo ← ++ (byte*) init_multiply::sqr2_lo - (byte*~) init_multiply::$15 ← (byte[512]) mul_sqr2_lo + (word/signed word/dword/signed dword) 511 - (boolean~) init_multiply::$16 ← (byte*) init_multiply::sqr2_lo != (byte*~) init_multiply::$15 - if((boolean~) init_multiply::$16) goto init_multiply::@3 - (byte*~) init_multiply::$17 ← (byte[512]) mul_sqr2_lo + (word/signed word/dword/signed dword) 511 - (byte*~) init_multiply::$18 ← (byte[512]) mul_sqr1_lo + (word/signed word/dword/signed dword) 256 - *((byte*~) init_multiply::$17) ← *((byte*~) init_multiply::$18) - (byte*~) init_multiply::$19 ← (byte[512]) mul_sqr2_hi + (word/signed word/dword/signed dword) 511 - (byte*~) init_multiply::$20 ← (byte[512]) mul_sqr1_hi + (word/signed word/dword/signed dword) 256 - *((byte*~) init_multiply::$19) ← *((byte*~) init_multiply::$20) -init_multiply::@return: + (byte[512]) mulf_sqr1_lo ← { fill( 512, 0) } + (byte[512]) mulf_sqr1_hi ← { fill( 512, 0) } + (byte[512]) mulf_sqr2_lo ← { fill( 512, 0) } + (byte[512]) mulf_sqr2_hi ← { fill( 512, 0) } +proc (void()) mulf_init() + (word) mulf_init::sqr ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) mulf_init::x_2 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) mulf_init::c ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte*~) mulf_init::$0 ← (byte[512]) mulf_sqr1_hi + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte*) mulf_init::sqr1_hi ← (byte*~) mulf_init::$0 + (byte*~) mulf_init::$1 ← (byte[512]) mulf_sqr1_lo + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte*) mulf_init::sqr1_lo ← (byte*~) mulf_init::$1 +mulf_init::@1: + (byte) mulf_init::c ← ++ (byte) mulf_init::c + (byte~) mulf_init::$2 ← (byte) mulf_init::c & (byte/signed byte/word/signed word/dword/signed dword) 1 + (boolean~) mulf_init::$3 ← (byte~) mulf_init::$2 == (byte/signed byte/word/signed word/dword/signed dword) 0 + (boolean~) mulf_init::$4 ← ! (boolean~) mulf_init::$3 + if((boolean~) mulf_init::$4) goto mulf_init::@2 + (byte) mulf_init::x_2 ← ++ (byte) mulf_init::x_2 + (word) mulf_init::sqr ← ++ (word) mulf_init::sqr +mulf_init::@2: + (byte~) mulf_init::$5 ← < (word) mulf_init::sqr + *((byte*) mulf_init::sqr1_lo) ← (byte~) mulf_init::$5 + (byte~) mulf_init::$6 ← > (word) mulf_init::sqr + *((byte*) mulf_init::sqr1_hi) ← (byte~) mulf_init::$6 + (byte*) mulf_init::sqr1_hi ← ++ (byte*) mulf_init::sqr1_hi + (word~) mulf_init::$7 ← (word) mulf_init::sqr + (byte) mulf_init::x_2 + (word) mulf_init::sqr ← (word~) mulf_init::$7 + (byte*) mulf_init::sqr1_lo ← ++ (byte*) mulf_init::sqr1_lo + (byte*~) mulf_init::$8 ← (byte[512]) mulf_sqr1_lo + (word/signed word/dword/signed dword) 512 + (boolean~) mulf_init::$9 ← (byte*) mulf_init::sqr1_lo != (byte*~) mulf_init::$8 + if((boolean~) mulf_init::$9) goto mulf_init::@1 + (signed byte/signed word/signed dword~) mulf_init::$10 ← - (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte~) mulf_init::$11 ← ((byte)) (signed byte/signed word/signed dword~) mulf_init::$10 + (byte) mulf_init::x_255 ← (byte~) mulf_init::$11 + (byte) mulf_init::dir ← (byte/word/signed word/dword/signed dword) 255 + (byte*) mulf_init::sqr2_hi ← (byte[512]) mulf_sqr2_hi + (byte*) mulf_init::sqr2_lo ← (byte[512]) mulf_sqr2_lo +mulf_init::@3: + *((byte*) mulf_init::sqr2_lo) ← *((byte[512]) mulf_sqr1_lo + (byte) mulf_init::x_255) + *((byte*) mulf_init::sqr2_hi) ← *((byte[512]) mulf_sqr1_hi + (byte) mulf_init::x_255) + (byte*) mulf_init::sqr2_hi ← ++ (byte*) mulf_init::sqr2_hi + (byte/word~) mulf_init::$12 ← (byte) mulf_init::x_255 + (byte) mulf_init::dir + (byte) mulf_init::x_255 ← (byte/word~) mulf_init::$12 + (boolean~) mulf_init::$13 ← (byte) mulf_init::x_255 == (byte/signed byte/word/signed word/dword/signed dword) 0 + (boolean~) mulf_init::$14 ← ! (boolean~) mulf_init::$13 + if((boolean~) mulf_init::$14) goto mulf_init::@4 + (byte) mulf_init::dir ← (byte/signed byte/word/signed word/dword/signed dword) 1 +mulf_init::@4: + (byte*) mulf_init::sqr2_lo ← ++ (byte*) mulf_init::sqr2_lo + (byte*~) mulf_init::$15 ← (byte[512]) mulf_sqr2_lo + (word/signed word/dword/signed dword) 511 + (boolean~) mulf_init::$16 ← (byte*) mulf_init::sqr2_lo != (byte*~) mulf_init::$15 + if((boolean~) mulf_init::$16) goto mulf_init::@3 + (byte*~) mulf_init::$17 ← (byte[512]) mulf_sqr2_lo + (word/signed word/dword/signed dword) 511 + (byte*~) mulf_init::$18 ← (byte[512]) mulf_sqr1_lo + (word/signed word/dword/signed dword) 256 + *((byte*~) mulf_init::$17) ← *((byte*~) mulf_init::$18) + (byte*~) mulf_init::$19 ← (byte[512]) mulf_sqr2_hi + (word/signed word/dword/signed dword) 511 + (byte*~) mulf_init::$20 ← (byte[512]) mulf_sqr1_hi + (word/signed word/dword/signed dword) 256 + *((byte*~) mulf_init::$19) ← *((byte*~) mulf_init::$20) +mulf_init::@return: return -endproc // init_multiply() -proc (word()) multiply((byte) multiply::a , (byte) multiply::b) - (byte*) multiply::memA ← (byte/word/signed word/dword/signed dword) 254 - (byte*) multiply::memB ← (byte/word/signed word/dword/signed dword) 255 - *((byte*) multiply::memA) ← (byte) multiply::a - *((byte*) multiply::memB) ← (byte) multiply::b - asm { ldamemA stasm1+1 stasm3+1 eor#$ff stasm2+1 stasm4+1 ldxmemB sec sm1: ldamul_sqr1_lo,x sm2: sbcmul_sqr2_lo,x stamemA sm3: ldamul_sqr1_hi,x sm4: sbcmul_sqr2_hi,x stamemB } - (word) multiply::return ← { *((byte*) multiply::memB), *((byte*) multiply::memA) } - goto multiply::@return -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/dword/signed dword) 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/dword/signed dword~) signed_multiply::$8 ← (byte~) signed_multiply::$6 - (byte~) signed_multiply::$7 - lval((byte~) signed_multiply::$5) ← (byte/signed byte/word/signed word/dword/signed dword~) signed_multiply::$8 -signed_multiply::@1: - (boolean~) signed_multiply::$9 ← (signed byte) signed_multiply::b < (byte/signed byte/word/signed word/dword/signed dword) 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/dword/signed dword~) signed_multiply::$14 ← (byte~) signed_multiply::$12 - (byte~) signed_multiply::$13 - lval((byte~) signed_multiply::$11) ← (byte/signed byte/word/signed word/dword/signed dword~) 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() +endproc // mulf_init() +proc (word()) mulf8u((byte) mulf8u::a , (byte) mulf8u::b) + (byte*) mulf8u::memA ← (byte/word/signed word/dword/signed dword) 254 + (byte*) mulf8u::memB ← (byte/word/signed word/dword/signed dword) 255 + *((byte*) mulf8u::memA) ← (byte) mulf8u::a + *((byte*) mulf8u::memB) ← (byte) mulf8u::b + asm { ldamemA stasm1+1 stasm3+1 eor#$ff stasm2+1 stasm4+1 ldxmemB sec sm1: ldamulf_sqr1_lo,x sm2: sbcmulf_sqr2_lo,x stamemA sm3: ldamulf_sqr1_hi,x sm4: sbcmulf_sqr2_hi,x stamemB } + (word) mulf8u::return ← { *((byte*) mulf8u::memB), *((byte*) mulf8u::memA) } + goto mulf8u::@return +mulf8u::@return: + (word) mulf8u::return ← (word) mulf8u::return + return (word) mulf8u::return +endproc // mulf8u() +proc (signed word()) mulf8s((signed byte) mulf8s::a , (signed byte) mulf8s::b) + (byte~) mulf8s::$0 ← ((byte)) (signed byte) mulf8s::a + (byte~) mulf8s::$1 ← ((byte)) (signed byte) mulf8s::b + (word~) mulf8s::$2 ← call mulf8u (byte~) mulf8s::$0 (byte~) mulf8s::$1 + (word) mulf8s::m ← (word~) mulf8s::$2 + (boolean~) mulf8s::$3 ← (signed byte) mulf8s::a < (byte/signed byte/word/signed word/dword/signed dword) 0 + (boolean~) mulf8s::$4 ← ! (boolean~) mulf8s::$3 + if((boolean~) mulf8s::$4) goto mulf8s::@1 + (byte~) mulf8s::$5 ← > (word) mulf8s::m + (byte~) mulf8s::$6 ← > (word) mulf8s::m + (byte~) mulf8s::$7 ← ((byte)) (signed byte) mulf8s::b + (byte/signed byte/word/signed word/dword/signed dword~) mulf8s::$8 ← (byte~) mulf8s::$6 - (byte~) mulf8s::$7 + lval((byte~) mulf8s::$5) ← (byte/signed byte/word/signed word/dword/signed dword~) mulf8s::$8 +mulf8s::@1: + (boolean~) mulf8s::$9 ← (signed byte) mulf8s::b < (byte/signed byte/word/signed word/dword/signed dword) 0 + (boolean~) mulf8s::$10 ← ! (boolean~) mulf8s::$9 + if((boolean~) mulf8s::$10) goto mulf8s::@2 + (byte~) mulf8s::$11 ← > (word) mulf8s::m + (byte~) mulf8s::$12 ← > (word) mulf8s::m + (byte~) mulf8s::$13 ← ((byte)) (signed byte) mulf8s::a + (byte/signed byte/word/signed word/dword/signed dword~) mulf8s::$14 ← (byte~) mulf8s::$12 - (byte~) mulf8s::$13 + lval((byte~) mulf8s::$11) ← (byte/signed byte/word/signed word/dword/signed dword~) mulf8s::$14 +mulf8s::@2: + (signed word~) mulf8s::$15 ← ((signed word)) (word) mulf8s::m + (signed word) mulf8s::return ← (signed word~) mulf8s::$15 + goto mulf8s::@return +mulf8s::@return: + (signed word) mulf8s::return ← (signed word) mulf8s::return + return (signed word) mulf8s::return +endproc // mulf8s() (byte*) BGCOL ← (word/dword/signed dword) 53281 proc (void()) main() *((byte*) BGCOL) ← (byte/signed byte/word/signed word/dword/signed dword) 5 (void~) main::$0 ← call print_cls - (void~) main::$1 ← call init_multiply - (void~) main::$2 ← call init_multiply_asm + (void~) main::$1 ← call mulf_init + (void~) main::$2 ← call mulf_init_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/dword/signed dword) 0 - (boolean~) slow_multiply::$0 ← (byte) slow_multiply::a != (byte/signed byte/word/signed word/dword/signed dword) 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/dword/signed dword) 0 -slow_multiply::@2: - (word~) slow_multiply::$2 ← (word) slow_multiply::m + (byte) slow_multiply::b - (word) slow_multiply::m ← (word~) slow_multiply::$2 - (byte) slow_multiply::i ← ++ (byte) slow_multiply::i - (boolean~) slow_multiply::$3 ← (byte) slow_multiply::i != (byte) slow_multiply::a - if((boolean~) slow_multiply::$3) goto slow_multiply::@2 -slow_multiply::@1: - (word) slow_multiply::return ← (word) slow_multiply::m - goto slow_multiply::@return -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/dword/signed dword) 0 - (boolean~) slow_signed_multiply::$0 ← (signed byte) slow_signed_multiply::a < (byte/signed byte/word/signed word/dword/signed dword) 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/dword/signed dword) 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/dword/signed dword) 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/dword/signed dword) 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) } - (byte[512]) asm_mul_sqr2_hi ← { fill( 512, 0) } -proc (void()) init_multiply_asm() - asm { ldx#$00 txa .byte$c9 lb1: tya adc#$00 ml1: staasm_mul_sqr1_hi,x tay cmp#$40 txa ror ml9: adc#$00 staml9+1 inx ml0: staasm_mul_sqr1_lo,x bnelb1 incml0+2 incml1+2 clc iny bnelb1 ldx#$00 ldy#$ff !: ldaasm_mul_sqr1_hi+1,x staasm_mul_sqr2_hi+$100,x ldaasm_mul_sqr1_hi,x staasm_mul_sqr2_hi,y ldaasm_mul_sqr1_lo+1,x staasm_mul_sqr2_lo+$100,x ldaasm_mul_sqr1_lo,x staasm_mul_sqr2_lo,y dey inx bne!- } - (byte*) init_multiply_asm::mem ← (byte/word/signed word/dword/signed dword) 255 - *((byte*) init_multiply_asm::mem) ← *((byte[512]) asm_mul_sqr1_lo) - *((byte*) init_multiply_asm::mem) ← *((byte[512]) asm_mul_sqr1_hi) - *((byte*) init_multiply_asm::mem) ← *((byte[512]) asm_mul_sqr2_lo) - *((byte*) init_multiply_asm::mem) ← *((byte[512]) asm_mul_sqr2_hi) -init_multiply_asm::@return: +proc (word()) muls8u((byte) muls8u::a , (byte) muls8u::b) + (word) muls8u::m ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (boolean~) muls8u::$0 ← (byte) muls8u::a != (byte/signed byte/word/signed word/dword/signed dword) 0 + (boolean~) muls8u::$1 ← ! (boolean~) muls8u::$0 + if((boolean~) muls8u::$1) goto muls8u::@1 + (byte) muls8u::i ← (byte/signed byte/word/signed word/dword/signed dword) 0 +muls8u::@2: + (word~) muls8u::$2 ← (word) muls8u::m + (byte) muls8u::b + (word) muls8u::m ← (word~) muls8u::$2 + (byte) muls8u::i ← ++ (byte) muls8u::i + (boolean~) muls8u::$3 ← (byte) muls8u::i != (byte) muls8u::a + if((boolean~) muls8u::$3) goto muls8u::@2 +muls8u::@1: + (word) muls8u::return ← (word) muls8u::m + goto muls8u::@return +muls8u::@return: + (word) muls8u::return ← (word) muls8u::return + return (word) muls8u::return +endproc // muls8u() +proc (signed word()) muls8s((signed byte) muls8s::a , (signed byte) muls8s::b) + (signed word) muls8s::m ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (boolean~) muls8s::$0 ← (signed byte) muls8s::a < (byte/signed byte/word/signed word/dword/signed dword) 0 + (boolean~) muls8s::$1 ← ! (boolean~) muls8s::$0 + if((boolean~) muls8s::$1) goto muls8s::@1 + (signed byte) muls8s::i ← (byte/signed byte/word/signed word/dword/signed dword) 0 +muls8s::@2: + (signed word~) muls8s::$2 ← (signed word) muls8s::m - (signed byte) muls8s::b + (signed word) muls8s::m ← (signed word~) muls8s::$2 + (signed byte) muls8s::i ← -- (signed byte) muls8s::i + (boolean~) muls8s::$3 ← (signed byte) muls8s::i != (signed byte) muls8s::a + if((boolean~) muls8s::$3) goto muls8s::@2 + goto muls8s::@3 +muls8s::@1: + (boolean~) muls8s::$4 ← (signed byte) muls8s::a > (byte/signed byte/word/signed word/dword/signed dword) 0 + (boolean~) muls8s::$5 ← ! (boolean~) muls8s::$4 + if((boolean~) muls8s::$5) goto muls8s::@4 + (signed byte) muls8s::j ← (byte/signed byte/word/signed word/dword/signed dword) 0 +muls8s::@5: + (signed word~) muls8s::$6 ← (signed word) muls8s::m + (signed byte) muls8s::b + (signed word) muls8s::m ← (signed word~) muls8s::$6 + (signed byte) muls8s::j ← ++ (signed byte) muls8s::j + (boolean~) muls8s::$7 ← (signed byte) muls8s::j != (signed byte) muls8s::a + if((boolean~) muls8s::$7) goto muls8s::@5 +muls8s::@4: +muls8s::@3: + (signed word) muls8s::return ← (signed word) muls8s::m + goto muls8s::@return +muls8s::@return: + (signed word) muls8s::return ← (signed word) muls8s::return + return (signed word) muls8s::return +endproc // muls8s() + (byte[512]) mula_sqr1_lo ← { fill( 512, 0) } + (byte[512]) mula_sqr1_hi ← { fill( 512, 0) } + (byte[512]) mula_sqr2_lo ← { fill( 512, 0) } + (byte[512]) mula_sqr2_hi ← { fill( 512, 0) } +proc (void()) mulf_init_asm() + asm { ldx#$00 txa .byte$c9 lb1: tya adc#$00 ml1: stamula_sqr1_hi,x tay cmp#$40 txa ror ml9: adc#$00 staml9+1 inx ml0: stamula_sqr1_lo,x bnelb1 incml0+2 incml1+2 clc iny bnelb1 ldx#$00 ldy#$ff !: ldamula_sqr1_hi+1,x stamula_sqr2_hi+$100,x ldamula_sqr1_hi,x stamula_sqr2_hi,y ldamula_sqr1_lo+1,x stamula_sqr2_lo+$100,x ldamula_sqr1_lo,x stamula_sqr2_lo,y dey inx bne!- } + (byte*) mulf_init_asm::mem ← (byte/word/signed word/dword/signed dword) 255 + *((byte*) mulf_init_asm::mem) ← *((byte[512]) mula_sqr1_lo) + *((byte*) mulf_init_asm::mem) ← *((byte[512]) mula_sqr1_hi) + *((byte*) mulf_init_asm::mem) ← *((byte[512]) mula_sqr2_lo) + *((byte*) mulf_init_asm::mem) ← *((byte[512]) mula_sqr2_hi) +mulf_init_asm::@return: return -endproc // init_multiply_asm() +endproc // mulf_init_asm() proc (void()) multiply_tables_compare() - (byte*) multiply_tables_compare::asm_sqr ← (byte[512]) asm_mul_sqr1_lo - (byte*) multiply_tables_compare::kc_sqr ← (byte[512]) mul_sqr1_lo + (byte*) multiply_tables_compare::asm_sqr ← (byte[512]) mula_sqr1_lo + (byte*) multiply_tables_compare::kc_sqr ← (byte[512]) mulf_sqr1_lo multiply_tables_compare::@1: (boolean~) multiply_tables_compare::$0 ← *((byte*) multiply_tables_compare::kc_sqr) != *((byte*) multiply_tables_compare::asm_sqr) (boolean~) multiply_tables_compare::$1 ← ! (boolean~) multiply_tables_compare::$0 @@ -650,7 +652,7 @@ multiply_tables_compare::@2: (byte*) multiply_tables_compare::asm_sqr ← ++ (byte*) multiply_tables_compare::asm_sqr (byte*) multiply_tables_compare::kc_sqr ← ++ (byte*) multiply_tables_compare::kc_sqr (word/signed word/dword/signed dword~) multiply_tables_compare::$8 ← (word/signed word/dword/signed dword) 512 * (byte/signed byte/word/signed word/dword/signed dword) 4 - (byte*~) multiply_tables_compare::$9 ← (byte[512]) mul_sqr1_lo + (word/signed word/dword/signed dword~) multiply_tables_compare::$8 + (byte*~) multiply_tables_compare::$9 ← (byte[512]) mulf_sqr1_lo + (word/signed word/dword/signed dword~) multiply_tables_compare::$8 (boolean~) multiply_tables_compare::$10 ← (byte*) multiply_tables_compare::kc_sqr < (byte*~) multiply_tables_compare::$9 if((boolean~) multiply_tables_compare::$10) goto multiply_tables_compare::@1 (void~) multiply_tables_compare::$11 ← call print_str (string) "multiply tables match!@" @@ -663,9 +665,9 @@ proc (void()) multiply_results_compare() multiply_results_compare::@1: (byte) multiply_results_compare::b ← (byte/signed byte/word/signed word/dword/signed dword) 0 multiply_results_compare::@2: - (word~) multiply_results_compare::$0 ← call slow_multiply (byte) multiply_results_compare::a (byte) multiply_results_compare::b + (word~) multiply_results_compare::$0 ← call muls8u (byte) multiply_results_compare::a (byte) multiply_results_compare::b (word) multiply_results_compare::ms ← (word~) multiply_results_compare::$0 - (word~) multiply_results_compare::$1 ← call multiply (byte) multiply_results_compare::a (byte) multiply_results_compare::b + (word~) multiply_results_compare::$1 ← call mulf8u (byte) multiply_results_compare::a (byte) multiply_results_compare::b (word) multiply_results_compare::ma ← (word~) multiply_results_compare::$1 (boolean~) multiply_results_compare::$2 ← (word) multiply_results_compare::ms != (word) multiply_results_compare::ma (boolean~) multiply_results_compare::$3 ← ! (boolean~) multiply_results_compare::$2 @@ -705,9 +707,9 @@ signed_multiply_results_compare::@1: (signed byte/signed word/signed dword~) signed_multiply_results_compare::$1 ← - (byte/word/signed word/dword/signed dword) 128 (signed byte) signed_multiply_results_compare::b ← (signed byte/signed word/signed dword~) 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::$2 ← call muls8s (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::$3 ← call mulf8s (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 @@ -747,50 +749,7 @@ endproc // signed_multiply_error() SYMBOLS (byte*) BGCOL (byte*) SCREEN -(byte[512]) asm_mul_sqr1_hi -(byte[512]) asm_mul_sqr1_lo -(byte[512]) asm_mul_sqr2_hi -(byte[512]) asm_mul_sqr2_lo (byte*) char_cursor -(void()) init_multiply() -(byte*~) init_multiply::$0 -(byte*~) init_multiply::$1 -(signed byte/signed word/signed dword~) init_multiply::$10 -(byte~) init_multiply::$11 -(byte/word~) init_multiply::$12 -(boolean~) init_multiply::$13 -(boolean~) init_multiply::$14 -(byte*~) init_multiply::$15 -(boolean~) init_multiply::$16 -(byte*~) init_multiply::$17 -(byte*~) init_multiply::$18 -(byte*~) init_multiply::$19 -(byte~) init_multiply::$2 -(byte*~) init_multiply::$20 -(boolean~) init_multiply::$3 -(boolean~) init_multiply::$4 -(byte~) init_multiply::$5 -(byte~) init_multiply::$6 -(word~) init_multiply::$7 -(byte*~) init_multiply::$8 -(boolean~) init_multiply::$9 -(label) init_multiply::@1 -(label) init_multiply::@2 -(label) init_multiply::@3 -(label) init_multiply::@4 -(label) init_multiply::@return -(byte) init_multiply::c -(byte) init_multiply::dir -(word) init_multiply::sqr -(byte*) init_multiply::sqr1_hi -(byte*) init_multiply::sqr1_lo -(byte*) init_multiply::sqr2_hi -(byte*) init_multiply::sqr2_lo -(byte) init_multiply::x_2 -(byte) init_multiply::x_255 -(void()) init_multiply_asm() -(label) init_multiply_asm::@return -(byte*) init_multiply_asm::mem (byte*) line_cursor (void()) main() (void~) main::$0 @@ -800,17 +759,118 @@ SYMBOLS (void~) main::$4 (void~) main::$5 (label) main::@return -(byte[512]) mul_sqr1_hi -(byte[512]) mul_sqr1_lo -(byte[512]) mul_sqr2_hi -(byte[512]) mul_sqr2_lo -(word()) multiply((byte) multiply::a , (byte) multiply::b) -(label) multiply::@return -(byte) multiply::a -(byte) multiply::b -(byte*) multiply::memA -(byte*) multiply::memB -(word) multiply::return +(byte[512]) mula_sqr1_hi +(byte[512]) mula_sqr1_lo +(byte[512]) mula_sqr2_hi +(byte[512]) mula_sqr2_lo +(signed word()) mulf8s((signed byte) mulf8s::a , (signed byte) mulf8s::b) +(byte~) mulf8s::$0 +(byte~) mulf8s::$1 +(boolean~) mulf8s::$10 +(byte~) mulf8s::$11 +(byte~) mulf8s::$12 +(byte~) mulf8s::$13 +(byte/signed byte/word/signed word/dword/signed dword~) mulf8s::$14 +(signed word~) mulf8s::$15 +(word~) mulf8s::$2 +(boolean~) mulf8s::$3 +(boolean~) mulf8s::$4 +(byte~) mulf8s::$5 +(byte~) mulf8s::$6 +(byte~) mulf8s::$7 +(byte/signed byte/word/signed word/dword/signed dword~) mulf8s::$8 +(boolean~) mulf8s::$9 +(label) mulf8s::@1 +(label) mulf8s::@2 +(label) mulf8s::@return +(signed byte) mulf8s::a +(signed byte) mulf8s::b +(word) mulf8s::m +(signed word) mulf8s::return +(word()) mulf8u((byte) mulf8u::a , (byte) mulf8u::b) +(label) mulf8u::@return +(byte) mulf8u::a +(byte) mulf8u::b +(byte*) mulf8u::memA +(byte*) mulf8u::memB +(word) mulf8u::return +(void()) mulf_init() +(byte*~) mulf_init::$0 +(byte*~) mulf_init::$1 +(signed byte/signed word/signed dword~) mulf_init::$10 +(byte~) mulf_init::$11 +(byte/word~) mulf_init::$12 +(boolean~) mulf_init::$13 +(boolean~) mulf_init::$14 +(byte*~) mulf_init::$15 +(boolean~) mulf_init::$16 +(byte*~) mulf_init::$17 +(byte*~) mulf_init::$18 +(byte*~) mulf_init::$19 +(byte~) mulf_init::$2 +(byte*~) mulf_init::$20 +(boolean~) mulf_init::$3 +(boolean~) mulf_init::$4 +(byte~) mulf_init::$5 +(byte~) mulf_init::$6 +(word~) mulf_init::$7 +(byte*~) mulf_init::$8 +(boolean~) mulf_init::$9 +(label) mulf_init::@1 +(label) mulf_init::@2 +(label) mulf_init::@3 +(label) mulf_init::@4 +(label) mulf_init::@return +(byte) mulf_init::c +(byte) mulf_init::dir +(word) mulf_init::sqr +(byte*) mulf_init::sqr1_hi +(byte*) mulf_init::sqr1_lo +(byte*) mulf_init::sqr2_hi +(byte*) mulf_init::sqr2_lo +(byte) mulf_init::x_2 +(byte) mulf_init::x_255 +(void()) mulf_init_asm() +(label) mulf_init_asm::@return +(byte*) mulf_init_asm::mem +(byte[512]) mulf_sqr1_hi +(byte[512]) mulf_sqr1_lo +(byte[512]) mulf_sqr2_hi +(byte[512]) mulf_sqr2_lo +(signed word()) muls8s((signed byte) muls8s::a , (signed byte) muls8s::b) +(boolean~) muls8s::$0 +(boolean~) muls8s::$1 +(signed word~) muls8s::$2 +(boolean~) muls8s::$3 +(boolean~) muls8s::$4 +(boolean~) muls8s::$5 +(signed word~) muls8s::$6 +(boolean~) muls8s::$7 +(label) muls8s::@1 +(label) muls8s::@2 +(label) muls8s::@3 +(label) muls8s::@4 +(label) muls8s::@5 +(label) muls8s::@return +(signed byte) muls8s::a +(signed byte) muls8s::b +(signed byte) muls8s::i +(signed byte) muls8s::j +(signed word) muls8s::m +(signed word) muls8s::return +(word()) muls8u((byte) muls8u::a , (byte) muls8u::b) +(boolean~) muls8u::$0 +(boolean~) muls8u::$1 +(word~) muls8u::$2 +(boolean~) muls8u::$3 +(label) muls8u::@1 +(label) muls8u::@2 +(label) muls8u::@return +(byte) muls8u::a +(byte) muls8u::b +(byte) muls8u::i +(word) muls8u::m +(word) muls8u::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 @@ -919,30 +979,6 @@ 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/dword/signed dword~) 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/dword/signed dword~) 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 @@ -980,48 +1016,14 @@ SYMBOLS (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 -(word~) slow_multiply::$2 -(boolean~) slow_multiply::$3 -(label) slow_multiply::@1 -(label) slow_multiply::@2 -(label) slow_multiply::@return -(byte) slow_multiply::a -(byte) slow_multiply::b -(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 +Fixing lo/hi-lvalue with new tmpVar mulf8s::$16 mulf8s::$16 ← mulf8s::$8 +Fixing lo/hi-lvalue with new tmpVar mulf8s::$17 mulf8s::$17 ← mulf8s::$14 Promoting word/signed word/dword/signed dword to byte* in SCREEN ← ((byte*)) 1024 -Promoting byte/word/signed word/dword/signed dword to byte* in multiply::memA ← ((byte*)) 254 -Promoting byte/word/signed word/dword/signed dword to byte* in multiply::memB ← ((byte*)) 255 +Promoting byte/word/signed word/dword/signed dword to byte* in mulf8u::memA ← ((byte*)) 254 +Promoting byte/word/signed word/dword/signed dword to byte* in mulf8u::memB ← ((byte*)) 255 Promoting word/dword/signed dword to byte* in BGCOL ← ((byte*)) 53281 -Promoting byte/word/signed word/dword/signed dword to byte* in init_multiply_asm::mem ← ((byte*)) 255 +Promoting byte/word/signed word/dword/signed dword to byte* in mulf_init_asm::mem ← ((byte*)) 255 INITIAL CONTROL FLOW GRAPH @begin: scope:[] from (byte*) SCREEN ← ((byte*)) (word/signed word/dword/signed dword) 1024 @@ -1156,148 +1158,148 @@ print_cls::@return: scope:[print_cls] from print_cls::@2 return to:@return @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) } + (byte[512]) mulf_sqr1_lo ← { fill( 512, 0) } + (byte[512]) mulf_sqr1_hi ← { fill( 512, 0) } + (byte[512]) mulf_sqr2_lo ← { fill( 512, 0) } + (byte[512]) mulf_sqr2_hi ← { fill( 512, 0) } to:@9 -init_multiply: scope:[init_multiply] from - (word) init_multiply::sqr ← (byte/signed byte/word/signed word/dword/signed dword) 0 - (byte) init_multiply::x_2 ← (byte/signed byte/word/signed word/dword/signed dword) 0 - (byte) init_multiply::c ← (byte/signed byte/word/signed word/dword/signed dword) 0 - (byte*~) init_multiply::$0 ← (byte[512]) mul_sqr1_hi + (byte/signed byte/word/signed word/dword/signed dword) 1 - (byte*) init_multiply::sqr1_hi ← (byte*~) init_multiply::$0 - (byte*~) init_multiply::$1 ← (byte[512]) mul_sqr1_lo + (byte/signed byte/word/signed word/dword/signed dword) 1 - (byte*) init_multiply::sqr1_lo ← (byte*~) init_multiply::$1 - to:init_multiply::@1 -init_multiply::@1: scope:[init_multiply] from init_multiply init_multiply::@2 - (byte) init_multiply::c ← ++ (byte) init_multiply::c - (byte~) init_multiply::$2 ← (byte) init_multiply::c & (byte/signed byte/word/signed word/dword/signed dword) 1 - (boolean~) init_multiply::$3 ← (byte~) init_multiply::$2 == (byte/signed byte/word/signed word/dword/signed dword) 0 - (boolean~) init_multiply::$4 ← ! (boolean~) init_multiply::$3 - if((boolean~) init_multiply::$4) goto init_multiply::@2 - to:init_multiply::@5 -init_multiply::@2: scope:[init_multiply] from init_multiply::@1 init_multiply::@5 - (byte~) init_multiply::$5 ← < (word) init_multiply::sqr - *((byte*) init_multiply::sqr1_lo) ← (byte~) init_multiply::$5 - (byte~) init_multiply::$6 ← > (word) init_multiply::sqr - *((byte*) init_multiply::sqr1_hi) ← (byte~) init_multiply::$6 - (byte*) init_multiply::sqr1_hi ← ++ (byte*) init_multiply::sqr1_hi - (word~) init_multiply::$7 ← (word) init_multiply::sqr + (byte) init_multiply::x_2 - (word) init_multiply::sqr ← (word~) init_multiply::$7 - (byte*) init_multiply::sqr1_lo ← ++ (byte*) init_multiply::sqr1_lo - (byte*~) init_multiply::$8 ← (byte[512]) mul_sqr1_lo + (word/signed word/dword/signed dword) 512 - (boolean~) init_multiply::$9 ← (byte*) init_multiply::sqr1_lo != (byte*~) init_multiply::$8 - if((boolean~) init_multiply::$9) goto init_multiply::@1 - to:init_multiply::@6 -init_multiply::@5: scope:[init_multiply] from init_multiply::@1 - (byte) init_multiply::x_2 ← ++ (byte) init_multiply::x_2 - (word) init_multiply::sqr ← ++ (word) init_multiply::sqr - to:init_multiply::@2 -init_multiply::@6: scope:[init_multiply] from init_multiply::@2 - (signed byte/signed word/signed dword~) init_multiply::$10 ← - (byte/signed byte/word/signed word/dword/signed dword) 1 - (byte~) init_multiply::$11 ← ((byte)) (signed byte/signed word/signed dword~) init_multiply::$10 - (byte) init_multiply::x_255 ← (byte~) init_multiply::$11 - (byte) init_multiply::dir ← (byte/word/signed word/dword/signed dword) 255 - (byte*) init_multiply::sqr2_hi ← (byte[512]) mul_sqr2_hi - (byte*) init_multiply::sqr2_lo ← (byte[512]) mul_sqr2_lo - to:init_multiply::@3 -init_multiply::@3: scope:[init_multiply] from init_multiply::@4 init_multiply::@6 - *((byte*) init_multiply::sqr2_lo) ← *((byte[512]) mul_sqr1_lo + (byte) init_multiply::x_255) - *((byte*) init_multiply::sqr2_hi) ← *((byte[512]) mul_sqr1_hi + (byte) init_multiply::x_255) - (byte*) init_multiply::sqr2_hi ← ++ (byte*) init_multiply::sqr2_hi - (byte/word~) init_multiply::$12 ← (byte) init_multiply::x_255 + (byte) init_multiply::dir - (byte) init_multiply::x_255 ← (byte/word~) init_multiply::$12 - (boolean~) init_multiply::$13 ← (byte) init_multiply::x_255 == (byte/signed byte/word/signed word/dword/signed dword) 0 - (boolean~) init_multiply::$14 ← ! (boolean~) init_multiply::$13 - if((boolean~) init_multiply::$14) goto init_multiply::@4 - to:init_multiply::@7 -init_multiply::@4: scope:[init_multiply] from init_multiply::@3 init_multiply::@7 - (byte*) init_multiply::sqr2_lo ← ++ (byte*) init_multiply::sqr2_lo - (byte*~) init_multiply::$15 ← (byte[512]) mul_sqr2_lo + (word/signed word/dword/signed dword) 511 - (boolean~) init_multiply::$16 ← (byte*) init_multiply::sqr2_lo != (byte*~) init_multiply::$15 - if((boolean~) init_multiply::$16) goto init_multiply::@3 - to:init_multiply::@8 -init_multiply::@7: scope:[init_multiply] from init_multiply::@3 - (byte) init_multiply::dir ← (byte/signed byte/word/signed word/dword/signed dword) 1 - to:init_multiply::@4 -init_multiply::@8: scope:[init_multiply] from init_multiply::@4 - (byte*~) init_multiply::$17 ← (byte[512]) mul_sqr2_lo + (word/signed word/dword/signed dword) 511 - (byte*~) init_multiply::$18 ← (byte[512]) mul_sqr1_lo + (word/signed word/dword/signed dword) 256 - *((byte*~) init_multiply::$17) ← *((byte*~) init_multiply::$18) - (byte*~) init_multiply::$19 ← (byte[512]) mul_sqr2_hi + (word/signed word/dword/signed dword) 511 - (byte*~) init_multiply::$20 ← (byte[512]) mul_sqr1_hi + (word/signed word/dword/signed dword) 256 - *((byte*~) init_multiply::$19) ← *((byte*~) init_multiply::$20) - to:init_multiply::@return -init_multiply::@return: scope:[init_multiply] from init_multiply::@8 +mulf_init: scope:[mulf_init] from + (word) mulf_init::sqr ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) mulf_init::x_2 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) mulf_init::c ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte*~) mulf_init::$0 ← (byte[512]) mulf_sqr1_hi + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte*) mulf_init::sqr1_hi ← (byte*~) mulf_init::$0 + (byte*~) mulf_init::$1 ← (byte[512]) mulf_sqr1_lo + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte*) mulf_init::sqr1_lo ← (byte*~) mulf_init::$1 + to:mulf_init::@1 +mulf_init::@1: scope:[mulf_init] from mulf_init mulf_init::@2 + (byte) mulf_init::c ← ++ (byte) mulf_init::c + (byte~) mulf_init::$2 ← (byte) mulf_init::c & (byte/signed byte/word/signed word/dword/signed dword) 1 + (boolean~) mulf_init::$3 ← (byte~) mulf_init::$2 == (byte/signed byte/word/signed word/dword/signed dword) 0 + (boolean~) mulf_init::$4 ← ! (boolean~) mulf_init::$3 + if((boolean~) mulf_init::$4) goto mulf_init::@2 + to:mulf_init::@5 +mulf_init::@2: scope:[mulf_init] from mulf_init::@1 mulf_init::@5 + (byte~) mulf_init::$5 ← < (word) mulf_init::sqr + *((byte*) mulf_init::sqr1_lo) ← (byte~) mulf_init::$5 + (byte~) mulf_init::$6 ← > (word) mulf_init::sqr + *((byte*) mulf_init::sqr1_hi) ← (byte~) mulf_init::$6 + (byte*) mulf_init::sqr1_hi ← ++ (byte*) mulf_init::sqr1_hi + (word~) mulf_init::$7 ← (word) mulf_init::sqr + (byte) mulf_init::x_2 + (word) mulf_init::sqr ← (word~) mulf_init::$7 + (byte*) mulf_init::sqr1_lo ← ++ (byte*) mulf_init::sqr1_lo + (byte*~) mulf_init::$8 ← (byte[512]) mulf_sqr1_lo + (word/signed word/dword/signed dword) 512 + (boolean~) mulf_init::$9 ← (byte*) mulf_init::sqr1_lo != (byte*~) mulf_init::$8 + if((boolean~) mulf_init::$9) goto mulf_init::@1 + to:mulf_init::@6 +mulf_init::@5: scope:[mulf_init] from mulf_init::@1 + (byte) mulf_init::x_2 ← ++ (byte) mulf_init::x_2 + (word) mulf_init::sqr ← ++ (word) mulf_init::sqr + to:mulf_init::@2 +mulf_init::@6: scope:[mulf_init] from mulf_init::@2 + (signed byte/signed word/signed dword~) mulf_init::$10 ← - (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte~) mulf_init::$11 ← ((byte)) (signed byte/signed word/signed dword~) mulf_init::$10 + (byte) mulf_init::x_255 ← (byte~) mulf_init::$11 + (byte) mulf_init::dir ← (byte/word/signed word/dword/signed dword) 255 + (byte*) mulf_init::sqr2_hi ← (byte[512]) mulf_sqr2_hi + (byte*) mulf_init::sqr2_lo ← (byte[512]) mulf_sqr2_lo + to:mulf_init::@3 +mulf_init::@3: scope:[mulf_init] from mulf_init::@4 mulf_init::@6 + *((byte*) mulf_init::sqr2_lo) ← *((byte[512]) mulf_sqr1_lo + (byte) mulf_init::x_255) + *((byte*) mulf_init::sqr2_hi) ← *((byte[512]) mulf_sqr1_hi + (byte) mulf_init::x_255) + (byte*) mulf_init::sqr2_hi ← ++ (byte*) mulf_init::sqr2_hi + (byte/word~) mulf_init::$12 ← (byte) mulf_init::x_255 + (byte) mulf_init::dir + (byte) mulf_init::x_255 ← (byte/word~) mulf_init::$12 + (boolean~) mulf_init::$13 ← (byte) mulf_init::x_255 == (byte/signed byte/word/signed word/dword/signed dword) 0 + (boolean~) mulf_init::$14 ← ! (boolean~) mulf_init::$13 + if((boolean~) mulf_init::$14) goto mulf_init::@4 + to:mulf_init::@7 +mulf_init::@4: scope:[mulf_init] from mulf_init::@3 mulf_init::@7 + (byte*) mulf_init::sqr2_lo ← ++ (byte*) mulf_init::sqr2_lo + (byte*~) mulf_init::$15 ← (byte[512]) mulf_sqr2_lo + (word/signed word/dword/signed dword) 511 + (boolean~) mulf_init::$16 ← (byte*) mulf_init::sqr2_lo != (byte*~) mulf_init::$15 + if((boolean~) mulf_init::$16) goto mulf_init::@3 + to:mulf_init::@8 +mulf_init::@7: scope:[mulf_init] from mulf_init::@3 + (byte) mulf_init::dir ← (byte/signed byte/word/signed word/dword/signed dword) 1 + to:mulf_init::@4 +mulf_init::@8: scope:[mulf_init] from mulf_init::@4 + (byte*~) mulf_init::$17 ← (byte[512]) mulf_sqr2_lo + (word/signed word/dword/signed dword) 511 + (byte*~) mulf_init::$18 ← (byte[512]) mulf_sqr1_lo + (word/signed word/dword/signed dword) 256 + *((byte*~) mulf_init::$17) ← *((byte*~) mulf_init::$18) + (byte*~) mulf_init::$19 ← (byte[512]) mulf_sqr2_hi + (word/signed word/dword/signed dword) 511 + (byte*~) mulf_init::$20 ← (byte[512]) mulf_sqr1_hi + (word/signed word/dword/signed dword) 256 + *((byte*~) mulf_init::$19) ← *((byte*~) mulf_init::$20) + to:mulf_init::@return +mulf_init::@return: scope:[mulf_init] from mulf_init::@8 return to:@return @9: scope:[] from @8 to:@10 -multiply: scope:[multiply] from - (byte*) multiply::memA ← ((byte*)) (byte/word/signed word/dword/signed dword) 254 - (byte*) multiply::memB ← ((byte*)) (byte/word/signed word/dword/signed dword) 255 - *((byte*) multiply::memA) ← (byte) multiply::a - *((byte*) multiply::memB) ← (byte) multiply::b - asm { ldamemA stasm1+1 stasm3+1 eor#$ff stasm2+1 stasm4+1 ldxmemB sec sm1: ldamul_sqr1_lo,x sm2: sbcmul_sqr2_lo,x stamemA sm3: ldamul_sqr1_hi,x sm4: sbcmul_sqr2_hi,x stamemB } - (word) multiply::return ← { *((byte*) multiply::memB), *((byte*) multiply::memA) } - to:multiply::@return -multiply::@return: scope:[multiply] from multiply multiply::@1 - (word) multiply::return ← (word) multiply::return - return (word) multiply::return +mulf8u: scope:[mulf8u] from + (byte*) mulf8u::memA ← ((byte*)) (byte/word/signed word/dword/signed dword) 254 + (byte*) mulf8u::memB ← ((byte*)) (byte/word/signed word/dword/signed dword) 255 + *((byte*) mulf8u::memA) ← (byte) mulf8u::a + *((byte*) mulf8u::memB) ← (byte) mulf8u::b + asm { ldamemA stasm1+1 stasm3+1 eor#$ff stasm2+1 stasm4+1 ldxmemB sec sm1: ldamulf_sqr1_lo,x sm2: sbcmulf_sqr2_lo,x stamemA sm3: ldamulf_sqr1_hi,x sm4: sbcmulf_sqr2_hi,x stamemB } + (word) mulf8u::return ← { *((byte*) mulf8u::memB), *((byte*) mulf8u::memA) } + to:mulf8u::@return +mulf8u::@return: scope:[mulf8u] from mulf8u mulf8u::@1 + (word) mulf8u::return ← (word) mulf8u::return + return (word) mulf8u::return to:@return -multiply::@1: scope:[multiply] from - to:multiply::@return +mulf8u::@1: scope:[mulf8u] from + to:mulf8u::@return @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/dword/signed dword) 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/dword/signed dword) 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/dword/signed dword~) signed_multiply::$8 ← (byte~) signed_multiply::$6 - (byte~) signed_multiply::$7 - (byte/signed byte/word/signed word/dword/signed dword~) signed_multiply::$16 ← (byte/signed byte/word/signed word/dword/signed dword~) signed_multiply::$8 - (word) signed_multiply::m ← (word) signed_multiply::m hi= (byte/signed byte/word/signed word/dword/signed dword~) 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/dword/signed dword~) signed_multiply::$14 ← (byte~) signed_multiply::$12 - (byte~) signed_multiply::$13 - (byte/signed byte/word/signed word/dword/signed dword~) signed_multiply::$17 ← (byte/signed byte/word/signed word/dword/signed dword~) signed_multiply::$14 - (word) signed_multiply::m ← (word) signed_multiply::m hi= (byte/signed byte/word/signed word/dword/signed dword~) 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 +mulf8s: scope:[mulf8s] from + (byte~) mulf8s::$0 ← ((byte)) (signed byte) mulf8s::a + (byte~) mulf8s::$1 ← ((byte)) (signed byte) mulf8s::b + (word~) mulf8s::$2 ← call mulf8u (byte~) mulf8s::$0 (byte~) mulf8s::$1 + (word) mulf8s::m ← (word~) mulf8s::$2 + (boolean~) mulf8s::$3 ← (signed byte) mulf8s::a < (byte/signed byte/word/signed word/dword/signed dword) 0 + (boolean~) mulf8s::$4 ← ! (boolean~) mulf8s::$3 + if((boolean~) mulf8s::$4) goto mulf8s::@1 + to:mulf8s::@3 +mulf8s::@1: scope:[mulf8s] from mulf8s mulf8s::@3 + (boolean~) mulf8s::$9 ← (signed byte) mulf8s::b < (byte/signed byte/word/signed word/dword/signed dword) 0 + (boolean~) mulf8s::$10 ← ! (boolean~) mulf8s::$9 + if((boolean~) mulf8s::$10) goto mulf8s::@2 + to:mulf8s::@4 +mulf8s::@3: scope:[mulf8s] from mulf8s + (byte~) mulf8s::$5 ← > (word) mulf8s::m + (byte~) mulf8s::$6 ← > (word) mulf8s::m + (byte~) mulf8s::$7 ← ((byte)) (signed byte) mulf8s::b + (byte/signed byte/word/signed word/dword/signed dword~) mulf8s::$8 ← (byte~) mulf8s::$6 - (byte~) mulf8s::$7 + (byte/signed byte/word/signed word/dword/signed dword~) mulf8s::$16 ← (byte/signed byte/word/signed word/dword/signed dword~) mulf8s::$8 + (word) mulf8s::m ← (word) mulf8s::m hi= (byte/signed byte/word/signed word/dword/signed dword~) mulf8s::$16 + to:mulf8s::@1 +mulf8s::@2: scope:[mulf8s] from mulf8s::@1 mulf8s::@4 + (signed word~) mulf8s::$15 ← ((signed word)) (word) mulf8s::m + (signed word) mulf8s::return ← (signed word~) mulf8s::$15 + to:mulf8s::@return +mulf8s::@4: scope:[mulf8s] from mulf8s::@1 + (byte~) mulf8s::$11 ← > (word) mulf8s::m + (byte~) mulf8s::$12 ← > (word) mulf8s::m + (byte~) mulf8s::$13 ← ((byte)) (signed byte) mulf8s::a + (byte/signed byte/word/signed word/dword/signed dword~) mulf8s::$14 ← (byte~) mulf8s::$12 - (byte~) mulf8s::$13 + (byte/signed byte/word/signed word/dword/signed dword~) mulf8s::$17 ← (byte/signed byte/word/signed word/dword/signed dword~) mulf8s::$14 + (word) mulf8s::m ← (word) mulf8s::m hi= (byte/signed byte/word/signed word/dword/signed dword~) mulf8s::$17 + to:mulf8s::@2 +mulf8s::@return: scope:[mulf8s] from mulf8s::@2 mulf8s::@5 + (signed word) mulf8s::return ← (signed word) mulf8s::return + return (signed word) mulf8s::return to:@return -signed_multiply::@5: scope:[signed_multiply] from - to:signed_multiply::@return +mulf8s::@5: scope:[mulf8s] from + to:mulf8s::@return @11: scope:[] from @10 (byte*) BGCOL ← ((byte*)) (word/dword/signed dword) 53281 to:@12 main: scope:[main] from *((byte*) BGCOL) ← (byte/signed byte/word/signed word/dword/signed dword) 5 (void~) main::$0 ← call print_cls - (void~) main::$1 ← call init_multiply - (void~) main::$2 ← call init_multiply_asm + (void~) main::$1 ← call mulf_init + (void~) main::$2 ← call mulf_init_asm (void~) main::$3 ← call multiply_tables_compare (void~) main::$4 ← call multiply_results_compare (void~) main::$5 ← call signed_multiply_results_compare @@ -1307,105 +1309,105 @@ main::@return: scope:[main] from main to:@return @12: scope:[] from @11 to:@13 -slow_multiply: scope:[slow_multiply] from - (word) slow_multiply::m ← (byte/signed byte/word/signed word/dword/signed dword) 0 - (boolean~) slow_multiply::$0 ← (byte) slow_multiply::a != (byte/signed byte/word/signed word/dword/signed dword) 0 - (boolean~) slow_multiply::$1 ← ! (boolean~) slow_multiply::$0 - if((boolean~) slow_multiply::$1) goto slow_multiply::@1 - to:slow_multiply::@3 -slow_multiply::@1: scope:[slow_multiply] from slow_multiply slow_multiply::@4 - (word) slow_multiply::return ← (word) slow_multiply::m - to:slow_multiply::@return -slow_multiply::@3: scope:[slow_multiply] from slow_multiply - (byte) slow_multiply::i ← (byte/signed byte/word/signed word/dword/signed dword) 0 - to:slow_multiply::@2 -slow_multiply::@2: scope:[slow_multiply] from slow_multiply::@2 slow_multiply::@3 - (word~) slow_multiply::$2 ← (word) slow_multiply::m + (byte) slow_multiply::b - (word) slow_multiply::m ← (word~) slow_multiply::$2 - (byte) slow_multiply::i ← ++ (byte) slow_multiply::i - (boolean~) slow_multiply::$3 ← (byte) slow_multiply::i != (byte) slow_multiply::a - if((boolean~) slow_multiply::$3) goto slow_multiply::@2 - to:slow_multiply::@4 -slow_multiply::@4: scope:[slow_multiply] from slow_multiply::@2 - to:slow_multiply::@1 -slow_multiply::@return: scope:[slow_multiply] from slow_multiply::@1 slow_multiply::@5 - (word) slow_multiply::return ← (word) slow_multiply::return - return (word) slow_multiply::return +muls8u: scope:[muls8u] from + (word) muls8u::m ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (boolean~) muls8u::$0 ← (byte) muls8u::a != (byte/signed byte/word/signed word/dword/signed dword) 0 + (boolean~) muls8u::$1 ← ! (boolean~) muls8u::$0 + if((boolean~) muls8u::$1) goto muls8u::@1 + to:muls8u::@3 +muls8u::@1: scope:[muls8u] from muls8u muls8u::@4 + (word) muls8u::return ← (word) muls8u::m + to:muls8u::@return +muls8u::@3: scope:[muls8u] from muls8u + (byte) muls8u::i ← (byte/signed byte/word/signed word/dword/signed dword) 0 + to:muls8u::@2 +muls8u::@2: scope:[muls8u] from muls8u::@2 muls8u::@3 + (word~) muls8u::$2 ← (word) muls8u::m + (byte) muls8u::b + (word) muls8u::m ← (word~) muls8u::$2 + (byte) muls8u::i ← ++ (byte) muls8u::i + (boolean~) muls8u::$3 ← (byte) muls8u::i != (byte) muls8u::a + if((boolean~) muls8u::$3) goto muls8u::@2 + to:muls8u::@4 +muls8u::@4: scope:[muls8u] from muls8u::@2 + to:muls8u::@1 +muls8u::@return: scope:[muls8u] from muls8u::@1 muls8u::@5 + (word) muls8u::return ← (word) muls8u::return + return (word) muls8u::return to:@return -slow_multiply::@5: scope:[slow_multiply] from - to:slow_multiply::@return +muls8u::@5: scope:[muls8u] from + to:muls8u::@return @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/dword/signed dword) 0 - (boolean~) slow_signed_multiply::$0 ← (signed byte) slow_signed_multiply::a < (byte/signed byte/word/signed word/dword/signed dword) 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/dword/signed dword) 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/dword/signed dword) 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/dword/signed dword) 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 +muls8s: scope:[muls8s] from + (signed word) muls8s::m ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (boolean~) muls8s::$0 ← (signed byte) muls8s::a < (byte/signed byte/word/signed word/dword/signed dword) 0 + (boolean~) muls8s::$1 ← ! (boolean~) muls8s::$0 + if((boolean~) muls8s::$1) goto muls8s::@1 + to:muls8s::@6 +muls8s::@1: scope:[muls8s] from muls8s muls8s::@8 + (boolean~) muls8s::$4 ← (signed byte) muls8s::a > (byte/signed byte/word/signed word/dword/signed dword) 0 + (boolean~) muls8s::$5 ← ! (boolean~) muls8s::$4 + if((boolean~) muls8s::$5) goto muls8s::@4 + to:muls8s::@9 +muls8s::@6: scope:[muls8s] from muls8s + (signed byte) muls8s::i ← (byte/signed byte/word/signed word/dword/signed dword) 0 + to:muls8s::@2 +muls8s::@2: scope:[muls8s] from muls8s::@2 muls8s::@6 + (signed word~) muls8s::$2 ← (signed word) muls8s::m - (signed byte) muls8s::b + (signed word) muls8s::m ← (signed word~) muls8s::$2 + (signed byte) muls8s::i ← -- (signed byte) muls8s::i + (boolean~) muls8s::$3 ← (signed byte) muls8s::i != (signed byte) muls8s::a + if((boolean~) muls8s::$3) goto muls8s::@2 + to:muls8s::@7 +muls8s::@7: scope:[muls8s] from muls8s::@2 + to:muls8s::@3 +muls8s::@3: scope:[muls8s] from muls8s::@4 muls8s::@7 + (signed word) muls8s::return ← (signed word) muls8s::m + to:muls8s::@return +muls8s::@8: scope:[muls8s] from + to:muls8s::@1 +muls8s::@4: scope:[muls8s] from muls8s::@1 muls8s::@10 + to:muls8s::@3 +muls8s::@9: scope:[muls8s] from muls8s::@1 + (signed byte) muls8s::j ← (byte/signed byte/word/signed word/dword/signed dword) 0 + to:muls8s::@5 +muls8s::@5: scope:[muls8s] from muls8s::@5 muls8s::@9 + (signed word~) muls8s::$6 ← (signed word) muls8s::m + (signed byte) muls8s::b + (signed word) muls8s::m ← (signed word~) muls8s::$6 + (signed byte) muls8s::j ← ++ (signed byte) muls8s::j + (boolean~) muls8s::$7 ← (signed byte) muls8s::j != (signed byte) muls8s::a + if((boolean~) muls8s::$7) goto muls8s::@5 + to:muls8s::@10 +muls8s::@10: scope:[muls8s] from muls8s::@5 + to:muls8s::@4 +muls8s::@return: scope:[muls8s] from muls8s::@11 muls8s::@3 + (signed word) muls8s::return ← (signed word) muls8s::return + return (signed word) muls8s::return to:@return -slow_signed_multiply::@11: scope:[slow_signed_multiply] from - to:slow_signed_multiply::@return +muls8s::@11: scope:[muls8s] from + to:muls8s::@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) } + (byte[512]) mula_sqr1_lo ← { fill( 512, 0) } + (byte[512]) mula_sqr1_hi ← { fill( 512, 0) } + (byte[512]) mula_sqr2_lo ← { fill( 512, 0) } + (byte[512]) mula_sqr2_hi ← { fill( 512, 0) } to:@15 -init_multiply_asm: scope:[init_multiply_asm] from - asm { ldx#$00 txa .byte$c9 lb1: tya adc#$00 ml1: staasm_mul_sqr1_hi,x tay cmp#$40 txa ror ml9: adc#$00 staml9+1 inx ml0: staasm_mul_sqr1_lo,x bnelb1 incml0+2 incml1+2 clc iny bnelb1 ldx#$00 ldy#$ff !: ldaasm_mul_sqr1_hi+1,x staasm_mul_sqr2_hi+$100,x ldaasm_mul_sqr1_hi,x staasm_mul_sqr2_hi,y ldaasm_mul_sqr1_lo+1,x staasm_mul_sqr2_lo+$100,x ldaasm_mul_sqr1_lo,x staasm_mul_sqr2_lo,y dey inx bne!- } - (byte*) init_multiply_asm::mem ← ((byte*)) (byte/word/signed word/dword/signed dword) 255 - *((byte*) init_multiply_asm::mem) ← *((byte[512]) asm_mul_sqr1_lo) - *((byte*) init_multiply_asm::mem) ← *((byte[512]) asm_mul_sqr1_hi) - *((byte*) init_multiply_asm::mem) ← *((byte[512]) asm_mul_sqr2_lo) - *((byte*) init_multiply_asm::mem) ← *((byte[512]) asm_mul_sqr2_hi) - to:init_multiply_asm::@return -init_multiply_asm::@return: scope:[init_multiply_asm] from init_multiply_asm +mulf_init_asm: scope:[mulf_init_asm] from + asm { ldx#$00 txa .byte$c9 lb1: tya adc#$00 ml1: stamula_sqr1_hi,x tay cmp#$40 txa ror ml9: adc#$00 staml9+1 inx ml0: stamula_sqr1_lo,x bnelb1 incml0+2 incml1+2 clc iny bnelb1 ldx#$00 ldy#$ff !: ldamula_sqr1_hi+1,x stamula_sqr2_hi+$100,x ldamula_sqr1_hi,x stamula_sqr2_hi,y ldamula_sqr1_lo+1,x stamula_sqr2_lo+$100,x ldamula_sqr1_lo,x stamula_sqr2_lo,y dey inx bne!- } + (byte*) mulf_init_asm::mem ← ((byte*)) (byte/word/signed word/dword/signed dword) 255 + *((byte*) mulf_init_asm::mem) ← *((byte[512]) mula_sqr1_lo) + *((byte*) mulf_init_asm::mem) ← *((byte[512]) mula_sqr1_hi) + *((byte*) mulf_init_asm::mem) ← *((byte[512]) mula_sqr2_lo) + *((byte*) mulf_init_asm::mem) ← *((byte[512]) mula_sqr2_hi) + to:mulf_init_asm::@return +mulf_init_asm::@return: scope:[mulf_init_asm] from mulf_init_asm return to:@return @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 + (byte*) multiply_tables_compare::asm_sqr ← (byte[512]) mula_sqr1_lo + (byte*) multiply_tables_compare::kc_sqr ← (byte[512]) mulf_sqr1_lo to:multiply_tables_compare::@1 multiply_tables_compare::@1: scope:[multiply_tables_compare] from multiply_tables_compare multiply_tables_compare::@2 (boolean~) multiply_tables_compare::$0 ← *((byte*) multiply_tables_compare::kc_sqr) != *((byte*) multiply_tables_compare::asm_sqr) @@ -1416,7 +1418,7 @@ multiply_tables_compare::@2: scope:[multiply_tables_compare] from multiply_tabl (byte*) multiply_tables_compare::asm_sqr ← ++ (byte*) multiply_tables_compare::asm_sqr (byte*) multiply_tables_compare::kc_sqr ← ++ (byte*) multiply_tables_compare::kc_sqr (word/signed word/dword/signed dword~) multiply_tables_compare::$8 ← (word/signed word/dword/signed dword) 512 * (byte/signed byte/word/signed word/dword/signed dword) 4 - (byte*~) multiply_tables_compare::$9 ← (byte[512]) mul_sqr1_lo + (word/signed word/dword/signed dword~) multiply_tables_compare::$8 + (byte*~) multiply_tables_compare::$9 ← (byte[512]) mulf_sqr1_lo + (word/signed word/dword/signed dword~) multiply_tables_compare::$8 (boolean~) multiply_tables_compare::$10 ← (byte*) multiply_tables_compare::kc_sqr < (byte*~) multiply_tables_compare::$9 if((boolean~) multiply_tables_compare::$10) goto multiply_tables_compare::@1 to:multiply_tables_compare::@5 @@ -1447,9 +1449,9 @@ multiply_results_compare::@1: scope:[multiply_results_compare] from multiply_re (byte) multiply_results_compare::b ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:multiply_results_compare::@2 multiply_results_compare::@2: scope:[multiply_results_compare] from multiply_results_compare::@1 multiply_results_compare::@3 - (word~) multiply_results_compare::$0 ← call slow_multiply (byte) multiply_results_compare::a (byte) multiply_results_compare::b + (word~) multiply_results_compare::$0 ← call muls8u (byte) multiply_results_compare::a (byte) multiply_results_compare::b (word) multiply_results_compare::ms ← (word~) multiply_results_compare::$0 - (word~) multiply_results_compare::$1 ← call multiply (byte) multiply_results_compare::a (byte) multiply_results_compare::b + (word~) multiply_results_compare::$1 ← call mulf8u (byte) multiply_results_compare::a (byte) multiply_results_compare::b (word) multiply_results_compare::ma ← (word~) multiply_results_compare::$1 (boolean~) multiply_results_compare::$2 ← (word) multiply_results_compare::ms != (word) multiply_results_compare::ma (boolean~) multiply_results_compare::$3 ← ! (boolean~) multiply_results_compare::$2 @@ -1505,9 +1507,9 @@ signed_multiply_results_compare::@1: scope:[signed_multiply_results_compare] fr (signed byte) signed_multiply_results_compare::b ← (signed byte/signed word/signed dword~) 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::$2 ← call muls8s (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::$3 ← call mulf8s (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 @@ -1567,8 +1569,8 @@ 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 [129] (byte~) signed_multiply::$5 ← > (word) signed_multiply::m -Eliminating unused variable (byte~) signed_multiply::$11 and assignment [137] (byte~) signed_multiply::$11 ← > (word) signed_multiply::m +Eliminating unused variable (byte~) mulf8s::$5 and assignment [129] (byte~) mulf8s::$5 ← > (word) mulf8s::m +Eliminating unused variable (byte~) mulf8s::$11 and assignment [137] (byte~) mulf8s::$11 ← > (word) mulf8s::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 @@ -1631,17 +1633,17 @@ Removing empty block @5 Removing empty block @6 Removing empty block @7 Removing empty block @9 -Removing empty block multiply::@1 +Removing empty block mulf8u::@1 Removing empty block @10 -Removing empty block signed_multiply::@5 +Removing empty block mulf8s::@5 Removing empty block @12 -Removing empty block slow_multiply::@4 -Removing empty block slow_multiply::@5 +Removing empty block muls8u::@4 +Removing empty block muls8u::@5 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 muls8s::@7 +Removing empty block muls8s::@8 +Removing empty block muls8s::@10 +Removing empty block muls8s::@11 Removing empty block @15 Removing empty block multiply_tables_compare::@4 Removing empty block @16 @@ -1893,178 +1895,178 @@ print_cls::@return: scope:[print_cls] from print_cls::@2 @8: scope:[] from @begin (byte*) char_cursor#158 ← phi( @begin/(byte*) char_cursor#0 ) (byte*) line_cursor#76 ← phi( @begin/(byte*) line_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) } + (byte[512]) mulf_sqr1_lo#0 ← { fill( 512, 0) } + (byte[512]) mulf_sqr1_hi#0 ← { fill( 512, 0) } + (byte[512]) mulf_sqr2_lo#0 ← { fill( 512, 0) } + (byte[512]) mulf_sqr2_hi#0 ← { fill( 512, 0) } to:@11 -init_multiply: scope:[init_multiply] from main::@1 - (word) init_multiply::sqr#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 - (byte) init_multiply::x_2#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 - (byte) init_multiply::c#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 - (byte*~) init_multiply::$0 ← (byte[512]) mul_sqr1_hi#0 + (byte/signed byte/word/signed word/dword/signed dword) 1 - (byte*) init_multiply::sqr1_hi#0 ← (byte*~) init_multiply::$0 - (byte*~) init_multiply::$1 ← (byte[512]) mul_sqr1_lo#0 + (byte/signed byte/word/signed word/dword/signed dword) 1 - (byte*) init_multiply::sqr1_lo#0 ← (byte*~) init_multiply::$1 - to:init_multiply::@1 -init_multiply::@1: scope:[init_multiply] from init_multiply init_multiply::@2 - (byte) init_multiply::x_2#4 ← phi( init_multiply/(byte) init_multiply::x_2#0 init_multiply::@2/(byte) init_multiply::x_2#2 ) - (byte*) init_multiply::sqr1_hi#3 ← phi( init_multiply/(byte*) init_multiply::sqr1_hi#0 init_multiply::@2/(byte*) init_multiply::sqr1_hi#1 ) - (byte*) init_multiply::sqr1_lo#3 ← phi( init_multiply/(byte*) init_multiply::sqr1_lo#0 init_multiply::@2/(byte*) init_multiply::sqr1_lo#1 ) - (word) init_multiply::sqr#5 ← phi( init_multiply/(word) init_multiply::sqr#0 init_multiply::@2/(word) init_multiply::sqr#1 ) - (byte) init_multiply::c#2 ← phi( init_multiply/(byte) init_multiply::c#0 init_multiply::@2/(byte) init_multiply::c#3 ) - (byte) init_multiply::c#1 ← ++ (byte) init_multiply::c#2 - (byte~) init_multiply::$2 ← (byte) init_multiply::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 1 - (boolean~) init_multiply::$3 ← (byte~) init_multiply::$2 == (byte/signed byte/word/signed word/dword/signed dword) 0 - (boolean~) init_multiply::$4 ← ! (boolean~) init_multiply::$3 - if((boolean~) init_multiply::$4) goto init_multiply::@2 - to:init_multiply::@5 -init_multiply::@2: scope:[init_multiply] from init_multiply::@1 init_multiply::@5 - (byte) init_multiply::c#3 ← phi( init_multiply::@1/(byte) init_multiply::c#1 init_multiply::@5/(byte) init_multiply::c#4 ) - (byte) init_multiply::x_2#2 ← phi( init_multiply::@1/(byte) init_multiply::x_2#4 init_multiply::@5/(byte) init_multiply::x_2#1 ) - (byte*) init_multiply::sqr1_hi#2 ← phi( init_multiply::@1/(byte*) init_multiply::sqr1_hi#3 init_multiply::@5/(byte*) init_multiply::sqr1_hi#4 ) - (byte*) init_multiply::sqr1_lo#2 ← phi( init_multiply::@1/(byte*) init_multiply::sqr1_lo#3 init_multiply::@5/(byte*) init_multiply::sqr1_lo#4 ) - (word) init_multiply::sqr#3 ← phi( init_multiply::@1/(word) init_multiply::sqr#5 init_multiply::@5/(word) init_multiply::sqr#2 ) - (byte~) init_multiply::$5 ← < (word) init_multiply::sqr#3 - *((byte*) init_multiply::sqr1_lo#2) ← (byte~) init_multiply::$5 - (byte~) init_multiply::$6 ← > (word) init_multiply::sqr#3 - *((byte*) init_multiply::sqr1_hi#2) ← (byte~) init_multiply::$6 - (byte*) init_multiply::sqr1_hi#1 ← ++ (byte*) init_multiply::sqr1_hi#2 - (word~) init_multiply::$7 ← (word) init_multiply::sqr#3 + (byte) init_multiply::x_2#2 - (word) init_multiply::sqr#1 ← (word~) init_multiply::$7 - (byte*) init_multiply::sqr1_lo#1 ← ++ (byte*) init_multiply::sqr1_lo#2 - (byte*~) init_multiply::$8 ← (byte[512]) mul_sqr1_lo#0 + (word/signed word/dword/signed dword) 512 - (boolean~) init_multiply::$9 ← (byte*) init_multiply::sqr1_lo#1 != (byte*~) init_multiply::$8 - if((boolean~) init_multiply::$9) goto init_multiply::@1 - to:init_multiply::@6 -init_multiply::@5: scope:[init_multiply] from init_multiply::@1 - (byte) init_multiply::c#4 ← phi( init_multiply::@1/(byte) init_multiply::c#1 ) - (byte*) init_multiply::sqr1_hi#4 ← phi( init_multiply::@1/(byte*) init_multiply::sqr1_hi#3 ) - (byte*) init_multiply::sqr1_lo#4 ← phi( init_multiply::@1/(byte*) init_multiply::sqr1_lo#3 ) - (word) init_multiply::sqr#4 ← phi( init_multiply::@1/(word) init_multiply::sqr#5 ) - (byte) init_multiply::x_2#3 ← phi( init_multiply::@1/(byte) init_multiply::x_2#4 ) - (byte) init_multiply::x_2#1 ← ++ (byte) init_multiply::x_2#3 - (word) init_multiply::sqr#2 ← ++ (word) init_multiply::sqr#4 - to:init_multiply::@2 -init_multiply::@6: scope:[init_multiply] from init_multiply::@2 - (signed byte/signed word/signed dword~) init_multiply::$10 ← - (byte/signed byte/word/signed word/dword/signed dword) 1 - (byte~) init_multiply::$11 ← ((byte)) (signed byte/signed word/signed dword~) init_multiply::$10 - (byte) init_multiply::x_255#0 ← (byte~) init_multiply::$11 - (byte) init_multiply::dir#0 ← (byte/word/signed word/dword/signed dword) 255 - (byte*) init_multiply::sqr2_hi#0 ← (byte[512]) mul_sqr2_hi#0 - (byte*) init_multiply::sqr2_lo#0 ← (byte[512]) mul_sqr2_lo#0 - to:init_multiply::@3 -init_multiply::@3: scope:[init_multiply] from init_multiply::@4 init_multiply::@6 - (byte) init_multiply::dir#2 ← phi( init_multiply::@4/(byte) init_multiply::dir#3 init_multiply::@6/(byte) init_multiply::dir#0 ) - (byte*) init_multiply::sqr2_hi#2 ← phi( init_multiply::@4/(byte*) init_multiply::sqr2_hi#3 init_multiply::@6/(byte*) init_multiply::sqr2_hi#0 ) - (byte*) init_multiply::sqr2_lo#2 ← phi( init_multiply::@4/(byte*) init_multiply::sqr2_lo#1 init_multiply::@6/(byte*) init_multiply::sqr2_lo#0 ) - (byte) init_multiply::x_255#2 ← phi( init_multiply::@4/(byte) init_multiply::x_255#3 init_multiply::@6/(byte) init_multiply::x_255#0 ) - *((byte*) init_multiply::sqr2_lo#2) ← *((byte[512]) mul_sqr1_lo#0 + (byte) init_multiply::x_255#2) - *((byte*) init_multiply::sqr2_hi#2) ← *((byte[512]) mul_sqr1_hi#0 + (byte) init_multiply::x_255#2) - (byte*) init_multiply::sqr2_hi#1 ← ++ (byte*) init_multiply::sqr2_hi#2 - (byte/word~) init_multiply::$12 ← (byte) init_multiply::x_255#2 + (byte) init_multiply::dir#2 - (byte) init_multiply::x_255#1 ← (byte/word~) init_multiply::$12 - (boolean~) init_multiply::$13 ← (byte) init_multiply::x_255#1 == (byte/signed byte/word/signed word/dword/signed dword) 0 - (boolean~) init_multiply::$14 ← ! (boolean~) init_multiply::$13 - if((boolean~) init_multiply::$14) goto init_multiply::@4 - to:init_multiply::@7 -init_multiply::@4: scope:[init_multiply] from init_multiply::@3 init_multiply::@7 - (byte) init_multiply::dir#3 ← phi( init_multiply::@3/(byte) init_multiply::dir#2 init_multiply::@7/(byte) init_multiply::dir#1 ) - (byte*) init_multiply::sqr2_hi#3 ← phi( init_multiply::@3/(byte*) init_multiply::sqr2_hi#1 init_multiply::@7/(byte*) init_multiply::sqr2_hi#4 ) - (byte) init_multiply::x_255#3 ← phi( init_multiply::@3/(byte) init_multiply::x_255#1 init_multiply::@7/(byte) init_multiply::x_255#4 ) - (byte*) init_multiply::sqr2_lo#3 ← phi( init_multiply::@3/(byte*) init_multiply::sqr2_lo#2 init_multiply::@7/(byte*) init_multiply::sqr2_lo#4 ) - (byte*) init_multiply::sqr2_lo#1 ← ++ (byte*) init_multiply::sqr2_lo#3 - (byte*~) init_multiply::$15 ← (byte[512]) mul_sqr2_lo#0 + (word/signed word/dword/signed dword) 511 - (boolean~) init_multiply::$16 ← (byte*) init_multiply::sqr2_lo#1 != (byte*~) init_multiply::$15 - if((boolean~) init_multiply::$16) goto init_multiply::@3 - to:init_multiply::@8 -init_multiply::@7: scope:[init_multiply] from init_multiply::@3 - (byte*) init_multiply::sqr2_hi#4 ← phi( init_multiply::@3/(byte*) init_multiply::sqr2_hi#1 ) - (byte) init_multiply::x_255#4 ← phi( init_multiply::@3/(byte) init_multiply::x_255#1 ) - (byte*) init_multiply::sqr2_lo#4 ← phi( init_multiply::@3/(byte*) init_multiply::sqr2_lo#2 ) - (byte) init_multiply::dir#1 ← (byte/signed byte/word/signed word/dword/signed dword) 1 - to:init_multiply::@4 -init_multiply::@8: scope:[init_multiply] from init_multiply::@4 - (byte*~) init_multiply::$17 ← (byte[512]) mul_sqr2_lo#0 + (word/signed word/dword/signed dword) 511 - (byte*~) init_multiply::$18 ← (byte[512]) mul_sqr1_lo#0 + (word/signed word/dword/signed dword) 256 - *((byte*~) init_multiply::$17) ← *((byte*~) init_multiply::$18) - (byte*~) init_multiply::$19 ← (byte[512]) mul_sqr2_hi#0 + (word/signed word/dword/signed dword) 511 - (byte*~) init_multiply::$20 ← (byte[512]) mul_sqr1_hi#0 + (word/signed word/dword/signed dword) 256 - *((byte*~) init_multiply::$19) ← *((byte*~) init_multiply::$20) - to:init_multiply::@return -init_multiply::@return: scope:[init_multiply] from init_multiply::@8 +mulf_init: scope:[mulf_init] from main::@1 + (word) mulf_init::sqr#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) mulf_init::x_2#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) mulf_init::c#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte*~) mulf_init::$0 ← (byte[512]) mulf_sqr1_hi#0 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte*) mulf_init::sqr1_hi#0 ← (byte*~) mulf_init::$0 + (byte*~) mulf_init::$1 ← (byte[512]) mulf_sqr1_lo#0 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte*) mulf_init::sqr1_lo#0 ← (byte*~) mulf_init::$1 + to:mulf_init::@1 +mulf_init::@1: scope:[mulf_init] from mulf_init mulf_init::@2 + (byte) mulf_init::x_2#4 ← phi( mulf_init/(byte) mulf_init::x_2#0 mulf_init::@2/(byte) mulf_init::x_2#2 ) + (byte*) mulf_init::sqr1_hi#3 ← phi( mulf_init/(byte*) mulf_init::sqr1_hi#0 mulf_init::@2/(byte*) mulf_init::sqr1_hi#1 ) + (byte*) mulf_init::sqr1_lo#3 ← phi( mulf_init/(byte*) mulf_init::sqr1_lo#0 mulf_init::@2/(byte*) mulf_init::sqr1_lo#1 ) + (word) mulf_init::sqr#5 ← phi( mulf_init/(word) mulf_init::sqr#0 mulf_init::@2/(word) mulf_init::sqr#1 ) + (byte) mulf_init::c#2 ← phi( mulf_init/(byte) mulf_init::c#0 mulf_init::@2/(byte) mulf_init::c#3 ) + (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 + (byte~) mulf_init::$2 ← (byte) mulf_init::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 1 + (boolean~) mulf_init::$3 ← (byte~) mulf_init::$2 == (byte/signed byte/word/signed word/dword/signed dword) 0 + (boolean~) mulf_init::$4 ← ! (boolean~) mulf_init::$3 + if((boolean~) mulf_init::$4) goto mulf_init::@2 + to:mulf_init::@5 +mulf_init::@2: scope:[mulf_init] from mulf_init::@1 mulf_init::@5 + (byte) mulf_init::c#3 ← phi( mulf_init::@1/(byte) mulf_init::c#1 mulf_init::@5/(byte) mulf_init::c#4 ) + (byte) mulf_init::x_2#2 ← phi( mulf_init::@1/(byte) mulf_init::x_2#4 mulf_init::@5/(byte) mulf_init::x_2#1 ) + (byte*) mulf_init::sqr1_hi#2 ← phi( mulf_init::@1/(byte*) mulf_init::sqr1_hi#3 mulf_init::@5/(byte*) mulf_init::sqr1_hi#4 ) + (byte*) mulf_init::sqr1_lo#2 ← phi( mulf_init::@1/(byte*) mulf_init::sqr1_lo#3 mulf_init::@5/(byte*) mulf_init::sqr1_lo#4 ) + (word) mulf_init::sqr#3 ← phi( mulf_init::@1/(word) mulf_init::sqr#5 mulf_init::@5/(word) mulf_init::sqr#2 ) + (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 + *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 + (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 + *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 + (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 + (word~) mulf_init::$7 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 + (word) mulf_init::sqr#1 ← (word~) mulf_init::$7 + (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 + (byte*~) mulf_init::$8 ← (byte[512]) mulf_sqr1_lo#0 + (word/signed word/dword/signed dword) 512 + (boolean~) mulf_init::$9 ← (byte*) mulf_init::sqr1_lo#1 != (byte*~) mulf_init::$8 + if((boolean~) mulf_init::$9) goto mulf_init::@1 + to:mulf_init::@6 +mulf_init::@5: scope:[mulf_init] from mulf_init::@1 + (byte) mulf_init::c#4 ← phi( mulf_init::@1/(byte) mulf_init::c#1 ) + (byte*) mulf_init::sqr1_hi#4 ← phi( mulf_init::@1/(byte*) mulf_init::sqr1_hi#3 ) + (byte*) mulf_init::sqr1_lo#4 ← phi( mulf_init::@1/(byte*) mulf_init::sqr1_lo#3 ) + (word) mulf_init::sqr#4 ← phi( mulf_init::@1/(word) mulf_init::sqr#5 ) + (byte) mulf_init::x_2#3 ← phi( mulf_init::@1/(byte) mulf_init::x_2#4 ) + (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 + (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 + to:mulf_init::@2 +mulf_init::@6: scope:[mulf_init] from mulf_init::@2 + (signed byte/signed word/signed dword~) mulf_init::$10 ← - (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte~) mulf_init::$11 ← ((byte)) (signed byte/signed word/signed dword~) mulf_init::$10 + (byte) mulf_init::x_255#0 ← (byte~) mulf_init::$11 + (byte) mulf_init::dir#0 ← (byte/word/signed word/dword/signed dword) 255 + (byte*) mulf_init::sqr2_hi#0 ← (byte[512]) mulf_sqr2_hi#0 + (byte*) mulf_init::sqr2_lo#0 ← (byte[512]) mulf_sqr2_lo#0 + to:mulf_init::@3 +mulf_init::@3: scope:[mulf_init] from mulf_init::@4 mulf_init::@6 + (byte) mulf_init::dir#2 ← phi( mulf_init::@4/(byte) mulf_init::dir#3 mulf_init::@6/(byte) mulf_init::dir#0 ) + (byte*) mulf_init::sqr2_hi#2 ← phi( mulf_init::@4/(byte*) mulf_init::sqr2_hi#3 mulf_init::@6/(byte*) mulf_init::sqr2_hi#0 ) + (byte*) mulf_init::sqr2_lo#2 ← phi( mulf_init::@4/(byte*) mulf_init::sqr2_lo#1 mulf_init::@6/(byte*) mulf_init::sqr2_lo#0 ) + (byte) mulf_init::x_255#2 ← phi( mulf_init::@4/(byte) mulf_init::x_255#3 mulf_init::@6/(byte) mulf_init::x_255#0 ) + *((byte*) mulf_init::sqr2_lo#2) ← *((byte[512]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) + *((byte*) mulf_init::sqr2_hi#2) ← *((byte[512]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) + (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 + (byte/word~) mulf_init::$12 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 + (byte) mulf_init::x_255#1 ← (byte/word~) mulf_init::$12 + (boolean~) mulf_init::$13 ← (byte) mulf_init::x_255#1 == (byte/signed byte/word/signed word/dword/signed dword) 0 + (boolean~) mulf_init::$14 ← ! (boolean~) mulf_init::$13 + if((boolean~) mulf_init::$14) goto mulf_init::@4 + to:mulf_init::@7 +mulf_init::@4: scope:[mulf_init] from mulf_init::@3 mulf_init::@7 + (byte) mulf_init::dir#3 ← phi( mulf_init::@3/(byte) mulf_init::dir#2 mulf_init::@7/(byte) mulf_init::dir#1 ) + (byte*) mulf_init::sqr2_hi#3 ← phi( mulf_init::@3/(byte*) mulf_init::sqr2_hi#1 mulf_init::@7/(byte*) mulf_init::sqr2_hi#4 ) + (byte) mulf_init::x_255#3 ← phi( mulf_init::@3/(byte) mulf_init::x_255#1 mulf_init::@7/(byte) mulf_init::x_255#4 ) + (byte*) mulf_init::sqr2_lo#3 ← phi( mulf_init::@3/(byte*) mulf_init::sqr2_lo#2 mulf_init::@7/(byte*) mulf_init::sqr2_lo#4 ) + (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#3 + (byte*~) mulf_init::$15 ← (byte[512]) mulf_sqr2_lo#0 + (word/signed word/dword/signed dword) 511 + (boolean~) mulf_init::$16 ← (byte*) mulf_init::sqr2_lo#1 != (byte*~) mulf_init::$15 + if((boolean~) mulf_init::$16) goto mulf_init::@3 + to:mulf_init::@8 +mulf_init::@7: scope:[mulf_init] from mulf_init::@3 + (byte*) mulf_init::sqr2_hi#4 ← phi( mulf_init::@3/(byte*) mulf_init::sqr2_hi#1 ) + (byte) mulf_init::x_255#4 ← phi( mulf_init::@3/(byte) mulf_init::x_255#1 ) + (byte*) mulf_init::sqr2_lo#4 ← phi( mulf_init::@3/(byte*) mulf_init::sqr2_lo#2 ) + (byte) mulf_init::dir#1 ← (byte/signed byte/word/signed word/dword/signed dword) 1 + to:mulf_init::@4 +mulf_init::@8: scope:[mulf_init] from mulf_init::@4 + (byte*~) mulf_init::$17 ← (byte[512]) mulf_sqr2_lo#0 + (word/signed word/dword/signed dword) 511 + (byte*~) mulf_init::$18 ← (byte[512]) mulf_sqr1_lo#0 + (word/signed word/dword/signed dword) 256 + *((byte*~) mulf_init::$17) ← *((byte*~) mulf_init::$18) + (byte*~) mulf_init::$19 ← (byte[512]) mulf_sqr2_hi#0 + (word/signed word/dword/signed dword) 511 + (byte*~) mulf_init::$20 ← (byte[512]) mulf_sqr1_hi#0 + (word/signed word/dword/signed dword) 256 + *((byte*~) mulf_init::$19) ← *((byte*~) mulf_init::$20) + to:mulf_init::@return +mulf_init::@return: scope:[mulf_init] from mulf_init::@8 return to:@return -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/dword/signed dword) 254 - (byte*) multiply::memB#0 ← ((byte*)) (byte/word/signed word/dword/signed dword) 255 - *((byte*) multiply::memA#0) ← (byte) multiply::a#2 - *((byte*) multiply::memB#0) ← (byte) multiply::b#2 - asm { ldamemA stasm1+1 stasm3+1 eor#$ff stasm2+1 stasm4+1 ldxmemB sec sm1: ldamul_sqr1_lo,x sm2: sbcmul_sqr2_lo,x stamemA sm3: ldamul_sqr1_hi,x sm4: sbcmul_sqr2_hi,x stamemB } - (word) multiply::return#0 ← { *((byte*) multiply::memB#0), *((byte*) multiply::memA#0) } - to:multiply::@return -multiply::@return: scope:[multiply] from multiply - (word) multiply::return#4 ← phi( multiply/(word) multiply::return#0 ) - (word) multiply::return#1 ← (word) multiply::return#4 +mulf8u: scope:[mulf8u] from mulf8s multiply_results_compare::@8 + (byte) mulf8u::b#2 ← phi( mulf8s/(byte) mulf8u::b#0 multiply_results_compare::@8/(byte) mulf8u::b#1 ) + (byte) mulf8u::a#2 ← phi( mulf8s/(byte) mulf8u::a#0 multiply_results_compare::@8/(byte) mulf8u::a#1 ) + (byte*) mulf8u::memA#0 ← ((byte*)) (byte/word/signed word/dword/signed dword) 254 + (byte*) mulf8u::memB#0 ← ((byte*)) (byte/word/signed word/dword/signed dword) 255 + *((byte*) mulf8u::memA#0) ← (byte) mulf8u::a#2 + *((byte*) mulf8u::memB#0) ← (byte) mulf8u::b#2 + asm { ldamemA stasm1+1 stasm3+1 eor#$ff stasm2+1 stasm4+1 ldxmemB sec sm1: ldamulf_sqr1_lo,x sm2: sbcmulf_sqr2_lo,x stamemA sm3: ldamulf_sqr1_hi,x sm4: sbcmulf_sqr2_hi,x stamemB } + (word) mulf8u::return#0 ← { *((byte*) mulf8u::memB#0), *((byte*) mulf8u::memA#0) } + to:mulf8u::@return +mulf8u::@return: scope:[mulf8u] from mulf8u + (word) mulf8u::return#4 ← phi( mulf8u/(word) mulf8u::return#0 ) + (word) mulf8u::return#1 ← (word) mulf8u::return#4 return to:@return -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/dword/signed dword) 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/dword/signed dword) 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/dword/signed dword~) signed_multiply::$8 ← (byte~) signed_multiply::$6 - (byte~) signed_multiply::$7 - (byte/signed byte/word/signed word/dword/signed dword~) signed_multiply::$16 ← (byte/signed byte/word/signed word/dword/signed dword~) signed_multiply::$8 - (word) signed_multiply::m#1 ← (word) signed_multiply::m#3 hi= (byte/signed byte/word/signed word/dword/signed dword~) 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/dword/signed dword~) signed_multiply::$14 ← (byte~) signed_multiply::$12 - (byte~) signed_multiply::$13 - (byte/signed byte/word/signed word/dword/signed dword~) signed_multiply::$17 ← (byte/signed byte/word/signed word/dword/signed dword~) signed_multiply::$14 - (word) signed_multiply::m#2 ← (word) signed_multiply::m#5 hi= (byte/signed byte/word/signed word/dword/signed dword~) 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 +mulf8s: scope:[mulf8s] from signed_multiply_results_compare::@8 + (signed byte) mulf8s::b#1 ← phi( signed_multiply_results_compare::@8/(signed byte) mulf8s::b#0 ) + (signed byte) mulf8s::a#1 ← phi( signed_multiply_results_compare::@8/(signed byte) mulf8s::a#0 ) + (byte~) mulf8s::$0 ← ((byte)) (signed byte) mulf8s::a#1 + (byte~) mulf8s::$1 ← ((byte)) (signed byte) mulf8s::b#1 + (byte) mulf8u::a#0 ← (byte~) mulf8s::$0 + (byte) mulf8u::b#0 ← (byte~) mulf8s::$1 + call mulf8u param-assignment + (word) mulf8u::return#2 ← (word) mulf8u::return#1 + to:mulf8s::@6 +mulf8s::@6: scope:[mulf8s] from mulf8s + (signed byte) mulf8s::b#4 ← phi( mulf8s/(signed byte) mulf8s::b#1 ) + (signed byte) mulf8s::a#2 ← phi( mulf8s/(signed byte) mulf8s::a#1 ) + (word) mulf8u::return#5 ← phi( mulf8s/(word) mulf8u::return#2 ) + (word~) mulf8s::$2 ← (word) mulf8u::return#5 + (word) mulf8s::m#0 ← (word~) mulf8s::$2 + (boolean~) mulf8s::$3 ← (signed byte) mulf8s::a#2 < (byte/signed byte/word/signed word/dword/signed dword) 0 + (boolean~) mulf8s::$4 ← ! (boolean~) mulf8s::$3 + if((boolean~) mulf8s::$4) goto mulf8s::@1 + to:mulf8s::@3 +mulf8s::@1: scope:[mulf8s] from mulf8s::@3 mulf8s::@6 + (signed byte) mulf8s::a#4 ← phi( mulf8s::@3/(signed byte) mulf8s::a#5 mulf8s::@6/(signed byte) mulf8s::a#2 ) + (word) mulf8s::m#6 ← phi( mulf8s::@3/(word) mulf8s::m#1 mulf8s::@6/(word) mulf8s::m#0 ) + (signed byte) mulf8s::b#2 ← phi( mulf8s::@3/(signed byte) mulf8s::b#3 mulf8s::@6/(signed byte) mulf8s::b#4 ) + (boolean~) mulf8s::$9 ← (signed byte) mulf8s::b#2 < (byte/signed byte/word/signed word/dword/signed dword) 0 + (boolean~) mulf8s::$10 ← ! (boolean~) mulf8s::$9 + if((boolean~) mulf8s::$10) goto mulf8s::@2 + to:mulf8s::@4 +mulf8s::@3: scope:[mulf8s] from mulf8s::@6 + (signed byte) mulf8s::a#5 ← phi( mulf8s::@6/(signed byte) mulf8s::a#2 ) + (signed byte) mulf8s::b#3 ← phi( mulf8s::@6/(signed byte) mulf8s::b#4 ) + (word) mulf8s::m#3 ← phi( mulf8s::@6/(word) mulf8s::m#0 ) + (byte~) mulf8s::$6 ← > (word) mulf8s::m#3 + (byte~) mulf8s::$7 ← ((byte)) (signed byte) mulf8s::b#3 + (byte/signed byte/word/signed word/dword/signed dword~) mulf8s::$8 ← (byte~) mulf8s::$6 - (byte~) mulf8s::$7 + (byte/signed byte/word/signed word/dword/signed dword~) mulf8s::$16 ← (byte/signed byte/word/signed word/dword/signed dword~) mulf8s::$8 + (word) mulf8s::m#1 ← (word) mulf8s::m#3 hi= (byte/signed byte/word/signed word/dword/signed dword~) mulf8s::$16 + to:mulf8s::@1 +mulf8s::@2: scope:[mulf8s] from mulf8s::@1 mulf8s::@4 + (word) mulf8s::m#4 ← phi( mulf8s::@1/(word) mulf8s::m#6 mulf8s::@4/(word) mulf8s::m#2 ) + (signed word~) mulf8s::$15 ← ((signed word)) (word) mulf8s::m#4 + (signed word) mulf8s::return#0 ← (signed word~) mulf8s::$15 + to:mulf8s::@return +mulf8s::@4: scope:[mulf8s] from mulf8s::@1 + (signed byte) mulf8s::a#3 ← phi( mulf8s::@1/(signed byte) mulf8s::a#4 ) + (word) mulf8s::m#5 ← phi( mulf8s::@1/(word) mulf8s::m#6 ) + (byte~) mulf8s::$12 ← > (word) mulf8s::m#5 + (byte~) mulf8s::$13 ← ((byte)) (signed byte) mulf8s::a#3 + (byte/signed byte/word/signed word/dword/signed dword~) mulf8s::$14 ← (byte~) mulf8s::$12 - (byte~) mulf8s::$13 + (byte/signed byte/word/signed word/dword/signed dword~) mulf8s::$17 ← (byte/signed byte/word/signed word/dword/signed dword~) mulf8s::$14 + (word) mulf8s::m#2 ← (word) mulf8s::m#5 hi= (byte/signed byte/word/signed word/dword/signed dword~) mulf8s::$17 + to:mulf8s::@2 +mulf8s::@return: scope:[mulf8s] from mulf8s::@2 + (signed word) mulf8s::return#3 ← phi( mulf8s::@2/(signed word) mulf8s::return#0 ) + (signed word) mulf8s::return#1 ← (signed word) mulf8s::return#3 return to:@return @11: scope:[] from @8 @@ -2085,13 +2087,13 @@ main::@1: scope:[main] from main (byte*) line_cursor#27 ← phi( main/(byte*) line_cursor#4 ) (byte*) line_cursor#5 ← (byte*) line_cursor#27 (byte*) char_cursor#21 ← (byte*) char_cursor#81 - call init_multiply param-assignment + call mulf_init param-assignment to:main::@2 main::@2: scope:[main] from main::@1 (byte*) BGCOL#17 ← phi( main::@1/(byte*) BGCOL#22 ) (byte*) line_cursor#57 ← phi( main::@1/(byte*) line_cursor#5 ) (byte*) char_cursor#144 ← phi( main::@1/(byte*) char_cursor#21 ) - call init_multiply_asm param-assignment + call mulf_init_asm param-assignment to:main::@3 main::@3: scope:[main] from main::@2 (byte*) BGCOL#14 ← phi( main::@2/(byte*) BGCOL#17 ) @@ -2128,128 +2130,128 @@ main::@return: scope:[main] from main::@6 (byte*) char_cursor#25 ← (byte*) char_cursor#85 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/dword/signed dword) 0 - (boolean~) slow_multiply::$0 ← (byte) slow_multiply::a#1 != (byte/signed byte/word/signed word/dword/signed dword) 0 - (boolean~) slow_multiply::$1 ← ! (boolean~) slow_multiply::$0 - if((boolean~) slow_multiply::$1) goto slow_multiply::@1 - to:slow_multiply::@3 -slow_multiply::@1: scope:[slow_multiply] from slow_multiply slow_multiply::@2 - (word) slow_multiply::m#2 ← phi( slow_multiply/(word) slow_multiply::m#0 slow_multiply::@2/(word) slow_multiply::m#1 ) - (word) slow_multiply::return#0 ← (word) slow_multiply::m#2 - to:slow_multiply::@return -slow_multiply::@3: scope:[slow_multiply] from slow_multiply - (byte) slow_multiply::a#3 ← phi( slow_multiply/(byte) slow_multiply::a#1 ) - (byte) slow_multiply::b#2 ← phi( slow_multiply/(byte) slow_multiply::b#3 ) - (word) slow_multiply::m#4 ← phi( slow_multiply/(word) slow_multiply::m#0 ) - (byte) slow_multiply::i#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 - to:slow_multiply::@2 -slow_multiply::@2: scope:[slow_multiply] from slow_multiply::@2 slow_multiply::@3 - (byte) slow_multiply::a#2 ← phi( slow_multiply::@2/(byte) slow_multiply::a#2 slow_multiply::@3/(byte) slow_multiply::a#3 ) - (byte) slow_multiply::i#2 ← phi( slow_multiply::@2/(byte) slow_multiply::i#1 slow_multiply::@3/(byte) slow_multiply::i#0 ) - (byte) slow_multiply::b#1 ← phi( slow_multiply::@2/(byte) slow_multiply::b#1 slow_multiply::@3/(byte) slow_multiply::b#2 ) - (word) slow_multiply::m#3 ← phi( slow_multiply::@2/(word) slow_multiply::m#1 slow_multiply::@3/(word) slow_multiply::m#4 ) - (word~) slow_multiply::$2 ← (word) slow_multiply::m#3 + (byte) slow_multiply::b#1 - (word) slow_multiply::m#1 ← (word~) slow_multiply::$2 - (byte) slow_multiply::i#1 ← ++ (byte) slow_multiply::i#2 - (boolean~) slow_multiply::$3 ← (byte) slow_multiply::i#1 != (byte) slow_multiply::a#2 - if((boolean~) slow_multiply::$3) goto slow_multiply::@2 - to:slow_multiply::@1 -slow_multiply::@return: scope:[slow_multiply] from slow_multiply::@1 - (word) slow_multiply::return#3 ← phi( slow_multiply::@1/(word) slow_multiply::return#0 ) - (word) slow_multiply::return#1 ← (word) slow_multiply::return#3 +muls8u: scope:[muls8u] from multiply_results_compare::@2 + (byte) muls8u::b#3 ← phi( multiply_results_compare::@2/(byte) muls8u::b#0 ) + (byte) muls8u::a#1 ← phi( multiply_results_compare::@2/(byte) muls8u::a#0 ) + (word) muls8u::m#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (boolean~) muls8u::$0 ← (byte) muls8u::a#1 != (byte/signed byte/word/signed word/dword/signed dword) 0 + (boolean~) muls8u::$1 ← ! (boolean~) muls8u::$0 + if((boolean~) muls8u::$1) goto muls8u::@1 + to:muls8u::@3 +muls8u::@1: scope:[muls8u] from muls8u muls8u::@2 + (word) muls8u::m#2 ← phi( muls8u/(word) muls8u::m#0 muls8u::@2/(word) muls8u::m#1 ) + (word) muls8u::return#0 ← (word) muls8u::m#2 + to:muls8u::@return +muls8u::@3: scope:[muls8u] from muls8u + (byte) muls8u::a#3 ← phi( muls8u/(byte) muls8u::a#1 ) + (byte) muls8u::b#2 ← phi( muls8u/(byte) muls8u::b#3 ) + (word) muls8u::m#4 ← phi( muls8u/(word) muls8u::m#0 ) + (byte) muls8u::i#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + to:muls8u::@2 +muls8u::@2: scope:[muls8u] from muls8u::@2 muls8u::@3 + (byte) muls8u::a#2 ← phi( muls8u::@2/(byte) muls8u::a#2 muls8u::@3/(byte) muls8u::a#3 ) + (byte) muls8u::i#2 ← phi( muls8u::@2/(byte) muls8u::i#1 muls8u::@3/(byte) muls8u::i#0 ) + (byte) muls8u::b#1 ← phi( muls8u::@2/(byte) muls8u::b#1 muls8u::@3/(byte) muls8u::b#2 ) + (word) muls8u::m#3 ← phi( muls8u::@2/(word) muls8u::m#1 muls8u::@3/(word) muls8u::m#4 ) + (word~) muls8u::$2 ← (word) muls8u::m#3 + (byte) muls8u::b#1 + (word) muls8u::m#1 ← (word~) muls8u::$2 + (byte) muls8u::i#1 ← ++ (byte) muls8u::i#2 + (boolean~) muls8u::$3 ← (byte) muls8u::i#1 != (byte) muls8u::a#2 + if((boolean~) muls8u::$3) goto muls8u::@2 + to:muls8u::@1 +muls8u::@return: scope:[muls8u] from muls8u::@1 + (word) muls8u::return#3 ← phi( muls8u::@1/(word) muls8u::return#0 ) + (word) muls8u::return#1 ← (word) muls8u::return#3 return to:@return -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/dword/signed dword) 0 - (boolean~) slow_signed_multiply::$0 ← (signed byte) slow_signed_multiply::a#1 < (byte/signed byte/word/signed word/dword/signed dword) 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/dword/signed dword) 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/dword/signed dword) 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/dword/signed dword) 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 +muls8s: scope:[muls8s] from signed_multiply_results_compare::@2 + (signed byte) muls8s::b#5 ← phi( signed_multiply_results_compare::@2/(signed byte) muls8s::b#0 ) + (signed byte) muls8s::a#1 ← phi( signed_multiply_results_compare::@2/(signed byte) muls8s::a#0 ) + (signed word) muls8s::m#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (boolean~) muls8s::$0 ← (signed byte) muls8s::a#1 < (byte/signed byte/word/signed word/dword/signed dword) 0 + (boolean~) muls8s::$1 ← ! (boolean~) muls8s::$0 + if((boolean~) muls8s::$1) goto muls8s::@1 + to:muls8s::@6 +muls8s::@1: scope:[muls8s] from muls8s + (signed byte) muls8s::b#6 ← phi( muls8s/(signed byte) muls8s::b#5 ) + (signed word) muls8s::m#9 ← phi( muls8s/(signed word) muls8s::m#0 ) + (signed byte) muls8s::a#2 ← phi( muls8s/(signed byte) muls8s::a#1 ) + (boolean~) muls8s::$4 ← (signed byte) muls8s::a#2 > (byte/signed byte/word/signed word/dword/signed dword) 0 + (boolean~) muls8s::$5 ← ! (boolean~) muls8s::$4 + if((boolean~) muls8s::$5) goto muls8s::@4 + to:muls8s::@9 +muls8s::@6: scope:[muls8s] from muls8s + (signed byte) muls8s::a#5 ← phi( muls8s/(signed byte) muls8s::a#1 ) + (signed byte) muls8s::b#3 ← phi( muls8s/(signed byte) muls8s::b#5 ) + (signed word) muls8s::m#6 ← phi( muls8s/(signed word) muls8s::m#0 ) + (signed byte) muls8s::i#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + to:muls8s::@2 +muls8s::@2: scope:[muls8s] from muls8s::@2 muls8s::@6 + (signed byte) muls8s::a#3 ← phi( muls8s::@2/(signed byte) muls8s::a#3 muls8s::@6/(signed byte) muls8s::a#5 ) + (signed byte) muls8s::i#2 ← phi( muls8s::@2/(signed byte) muls8s::i#1 muls8s::@6/(signed byte) muls8s::i#0 ) + (signed byte) muls8s::b#1 ← phi( muls8s::@2/(signed byte) muls8s::b#1 muls8s::@6/(signed byte) muls8s::b#3 ) + (signed word) muls8s::m#3 ← phi( muls8s::@2/(signed word) muls8s::m#1 muls8s::@6/(signed word) muls8s::m#6 ) + (signed word~) muls8s::$2 ← (signed word) muls8s::m#3 - (signed byte) muls8s::b#1 + (signed word) muls8s::m#1 ← (signed word~) muls8s::$2 + (signed byte) muls8s::i#1 ← -- (signed byte) muls8s::i#2 + (boolean~) muls8s::$3 ← (signed byte) muls8s::i#1 != (signed byte) muls8s::a#3 + if((boolean~) muls8s::$3) goto muls8s::@2 + to:muls8s::@3 +muls8s::@3: scope:[muls8s] from muls8s::@2 muls8s::@4 muls8s::@5 + (signed word) muls8s::m#4 ← phi( muls8s::@2/(signed word) muls8s::m#1 muls8s::@4/(signed word) muls8s::m#7 muls8s::@5/(signed word) muls8s::m#2 ) + (signed word) muls8s::return#0 ← (signed word) muls8s::m#4 + to:muls8s::@return +muls8s::@4: scope:[muls8s] from muls8s::@1 + (signed word) muls8s::m#7 ← phi( muls8s::@1/(signed word) muls8s::m#9 ) + to:muls8s::@3 +muls8s::@9: scope:[muls8s] from muls8s::@1 + (signed byte) muls8s::a#6 ← phi( muls8s::@1/(signed byte) muls8s::a#2 ) + (signed byte) muls8s::b#4 ← phi( muls8s::@1/(signed byte) muls8s::b#6 ) + (signed word) muls8s::m#8 ← phi( muls8s::@1/(signed word) muls8s::m#9 ) + (signed byte) muls8s::j#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + to:muls8s::@5 +muls8s::@5: scope:[muls8s] from muls8s::@5 muls8s::@9 + (signed byte) muls8s::a#4 ← phi( muls8s::@5/(signed byte) muls8s::a#4 muls8s::@9/(signed byte) muls8s::a#6 ) + (signed byte) muls8s::j#2 ← phi( muls8s::@5/(signed byte) muls8s::j#1 muls8s::@9/(signed byte) muls8s::j#0 ) + (signed byte) muls8s::b#2 ← phi( muls8s::@5/(signed byte) muls8s::b#2 muls8s::@9/(signed byte) muls8s::b#4 ) + (signed word) muls8s::m#5 ← phi( muls8s::@5/(signed word) muls8s::m#2 muls8s::@9/(signed word) muls8s::m#8 ) + (signed word~) muls8s::$6 ← (signed word) muls8s::m#5 + (signed byte) muls8s::b#2 + (signed word) muls8s::m#2 ← (signed word~) muls8s::$6 + (signed byte) muls8s::j#1 ← ++ (signed byte) muls8s::j#2 + (boolean~) muls8s::$7 ← (signed byte) muls8s::j#1 != (signed byte) muls8s::a#4 + if((boolean~) muls8s::$7) goto muls8s::@5 + to:muls8s::@3 +muls8s::@return: scope:[muls8s] from muls8s::@3 + (signed word) muls8s::return#3 ← phi( muls8s::@3/(signed word) muls8s::return#0 ) + (signed word) muls8s::return#1 ← (signed word) muls8s::return#3 return to:@return @14: scope:[] from @11 (byte*) char_cursor#151 ← phi( @11/(byte*) char_cursor#152 ) (byte*) line_cursor#66 ← phi( @11/(byte*) line_cursor#67 ) (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) } + (byte[512]) mula_sqr1_lo#0 ← { fill( 512, 0) } + (byte[512]) mula_sqr1_hi#0 ← { fill( 512, 0) } + (byte[512]) mula_sqr2_lo#0 ← { fill( 512, 0) } + (byte[512]) mula_sqr2_hi#0 ← { fill( 512, 0) } to:@20 -init_multiply_asm: scope:[init_multiply_asm] from main::@2 - asm { ldx#$00 txa .byte$c9 lb1: tya adc#$00 ml1: staasm_mul_sqr1_hi,x tay cmp#$40 txa ror ml9: adc#$00 staml9+1 inx ml0: staasm_mul_sqr1_lo,x bnelb1 incml0+2 incml1+2 clc iny bnelb1 ldx#$00 ldy#$ff !: ldaasm_mul_sqr1_hi+1,x staasm_mul_sqr2_hi+$100,x ldaasm_mul_sqr1_hi,x staasm_mul_sqr2_hi,y ldaasm_mul_sqr1_lo+1,x staasm_mul_sqr2_lo+$100,x ldaasm_mul_sqr1_lo,x staasm_mul_sqr2_lo,y dey inx bne!- } - (byte*) init_multiply_asm::mem#0 ← ((byte*)) (byte/word/signed word/dword/signed dword) 255 - *((byte*) init_multiply_asm::mem#0) ← *((byte[512]) asm_mul_sqr1_lo#0) - *((byte*) init_multiply_asm::mem#0) ← *((byte[512]) asm_mul_sqr1_hi#0) - *((byte*) init_multiply_asm::mem#0) ← *((byte[512]) asm_mul_sqr2_lo#0) - *((byte*) init_multiply_asm::mem#0) ← *((byte[512]) asm_mul_sqr2_hi#0) - to:init_multiply_asm::@return -init_multiply_asm::@return: scope:[init_multiply_asm] from init_multiply_asm +mulf_init_asm: scope:[mulf_init_asm] from main::@2 + asm { ldx#$00 txa .byte$c9 lb1: tya adc#$00 ml1: stamula_sqr1_hi,x tay cmp#$40 txa ror ml9: adc#$00 staml9+1 inx ml0: stamula_sqr1_lo,x bnelb1 incml0+2 incml1+2 clc iny bnelb1 ldx#$00 ldy#$ff !: ldamula_sqr1_hi+1,x stamula_sqr2_hi+$100,x ldamula_sqr1_hi,x stamula_sqr2_hi,y ldamula_sqr1_lo+1,x stamula_sqr2_lo+$100,x ldamula_sqr1_lo,x stamula_sqr2_lo,y dey inx bne!- } + (byte*) mulf_init_asm::mem#0 ← ((byte*)) (byte/word/signed word/dword/signed dword) 255 + *((byte*) mulf_init_asm::mem#0) ← *((byte[512]) mula_sqr1_lo#0) + *((byte*) mulf_init_asm::mem#0) ← *((byte[512]) mula_sqr1_hi#0) + *((byte*) mulf_init_asm::mem#0) ← *((byte[512]) mula_sqr2_lo#0) + *((byte*) mulf_init_asm::mem#0) ← *((byte[512]) mula_sqr2_hi#0) + to:mulf_init_asm::@return +mulf_init_asm::@return: scope:[mulf_init_asm] from mulf_init_asm return to:@return multiply_tables_compare: scope:[multiply_tables_compare] from main::@3 (byte*) line_cursor#85 ← phi( main::@3/(byte*) line_cursor#47 ) (byte*) char_cursor#153 ← phi( main::@3/(byte*) char_cursor#131 ) (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 + (byte*) multiply_tables_compare::asm_sqr#0 ← (byte[512]) mula_sqr1_lo#0 + (byte*) multiply_tables_compare::kc_sqr#0 ← (byte[512]) mulf_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#77 ← phi( multiply_tables_compare/(byte*) line_cursor#85 multiply_tables_compare::@2/(byte*) line_cursor#69 ) @@ -2270,7 +2272,7 @@ multiply_tables_compare::@2: scope:[multiply_tables_compare] from multiply_tabl (byte*) multiply_tables_compare::asm_sqr#1 ← ++ (byte*) multiply_tables_compare::asm_sqr#3 (byte*) multiply_tables_compare::kc_sqr#1 ← ++ (byte*) multiply_tables_compare::kc_sqr#3 (word/signed word/dword/signed dword~) multiply_tables_compare::$8 ← (word/signed word/dword/signed dword) 512 * (byte/signed byte/word/signed word/dword/signed dword) 4 - (byte*~) multiply_tables_compare::$9 ← (byte[512]) mul_sqr1_lo#0 + (word/signed word/dword/signed dword~) multiply_tables_compare::$8 + (byte*~) multiply_tables_compare::$9 ← (byte[512]) mulf_sqr1_lo#0 + (word/signed word/dword/signed dword~) multiply_tables_compare::$8 (boolean~) multiply_tables_compare::$10 ← (byte*) multiply_tables_compare::kc_sqr#1 < (byte*~) multiply_tables_compare::$9 if((boolean~) multiply_tables_compare::$10) goto multiply_tables_compare::@1 to:multiply_tables_compare::@5 @@ -2360,10 +2362,10 @@ multiply_results_compare::@2: scope:[multiply_results_compare] from multiply_re (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#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 + (byte) muls8u::a#0 ← (byte) multiply_results_compare::a#2 + (byte) muls8u::b#0 ← (byte) multiply_results_compare::b#2 + call muls8u param-assignment + (word) muls8u::return#2 ← (word) muls8u::return#1 to:multiply_results_compare::@8 multiply_results_compare::@8: scope:[multiply_results_compare] from multiply_results_compare::@2 (byte*) line_cursor#70 ← phi( multiply_results_compare::@2/(byte*) line_cursor#79 ) @@ -2371,13 +2373,13 @@ multiply_results_compare::@8: scope:[multiply_results_compare] from multiply_re (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) muls8u::return#4 ← phi( multiply_results_compare::@2/(word) muls8u::return#2 ) + (word~) multiply_results_compare::$0 ← (word) muls8u::return#4 (word) multiply_results_compare::ms#0 ← (word~) multiply_results_compare::$0 - (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#3 ← (word) multiply::return#1 + (byte) mulf8u::a#1 ← (byte) multiply_results_compare::a#3 + (byte) mulf8u::b#1 ← (byte) multiply_results_compare::b#3 + call mulf8u param-assignment + (word) mulf8u::return#3 ← (word) mulf8u::return#1 to:multiply_results_compare::@9 multiply_results_compare::@9: scope:[multiply_results_compare] from multiply_results_compare::@8 (byte*) line_cursor#60 ← phi( multiply_results_compare::@8/(byte*) line_cursor#70 ) @@ -2386,8 +2388,8 @@ multiply_results_compare::@9: scope:[multiply_results_compare] from multiply_re (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#6 ← phi( multiply_results_compare::@8/(word) multiply::return#3 ) - (word~) multiply_results_compare::$1 ← (word) multiply::return#6 + (word) mulf8u::return#6 ← phi( multiply_results_compare::@8/(word) mulf8u::return#3 ) + (word~) multiply_results_compare::$1 ← (word) mulf8u::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 @@ -2573,10 +2575,10 @@ signed_multiply_results_compare::@2: scope:[signed_multiply_results_compare] fr (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 + (signed byte) muls8s::a#0 ← (signed byte) signed_multiply_results_compare::a#2 + (signed byte) muls8s::b#0 ← (signed byte) signed_multiply_results_compare::b#2 + call muls8s param-assignment + (signed word) muls8s::return#2 ← (signed word) muls8s::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#73 ← phi( signed_multiply_results_compare::@2/(byte*) line_cursor#82 ) @@ -2584,13 +2586,13 @@ signed_multiply_results_compare::@8: scope:[signed_multiply_results_compare] fr (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) muls8s::return#4 ← phi( signed_multiply_results_compare::@2/(signed word) muls8s::return#2 ) + (signed word~) signed_multiply_results_compare::$2 ← (signed word) muls8s::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 + (signed byte) mulf8s::a#0 ← (signed byte) signed_multiply_results_compare::a#3 + (signed byte) mulf8s::b#0 ← (signed byte) signed_multiply_results_compare::b#3 + call mulf8s param-assignment + (signed word) mulf8s::return#2 ← (signed word) mulf8s::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#63 ← phi( signed_multiply_results_compare::@8/(byte*) line_cursor#73 ) @@ -2599,8 +2601,8 @@ signed_multiply_results_compare::@9: scope:[signed_multiply_results_compare] fr (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) mulf8s::return#4 ← phi( signed_multiply_results_compare::@8/(signed word) mulf8s::return#2 ) + (signed word~) signed_multiply_results_compare::$3 ← (signed word) mulf8s::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 @@ -2821,14 +2823,6 @@ SYMBOL TABLE SSA (byte*) BGCOL#9 (byte*) SCREEN (byte*) SCREEN#0 -(byte[512]) asm_mul_sqr1_hi -(byte[512]) asm_mul_sqr1_hi#0 -(byte[512]) asm_mul_sqr1_lo -(byte[512]) asm_mul_sqr1_lo#0 -(byte[512]) asm_mul_sqr2_hi -(byte[512]) asm_mul_sqr2_hi#0 -(byte[512]) asm_mul_sqr2_lo -(byte[512]) asm_mul_sqr2_lo#0 (byte*) char_cursor (byte*) char_cursor#0 (byte*) char_cursor#1 @@ -2995,95 +2989,6 @@ SYMBOL TABLE SSA (byte*) char_cursor#97 (byte*) char_cursor#98 (byte*) char_cursor#99 -(void()) init_multiply() -(byte*~) init_multiply::$0 -(byte*~) init_multiply::$1 -(signed byte/signed word/signed dword~) init_multiply::$10 -(byte~) init_multiply::$11 -(byte/word~) init_multiply::$12 -(boolean~) init_multiply::$13 -(boolean~) init_multiply::$14 -(byte*~) init_multiply::$15 -(boolean~) init_multiply::$16 -(byte*~) init_multiply::$17 -(byte*~) init_multiply::$18 -(byte*~) init_multiply::$19 -(byte~) init_multiply::$2 -(byte*~) init_multiply::$20 -(boolean~) init_multiply::$3 -(boolean~) init_multiply::$4 -(byte~) init_multiply::$5 -(byte~) init_multiply::$6 -(word~) init_multiply::$7 -(byte*~) init_multiply::$8 -(boolean~) init_multiply::$9 -(label) init_multiply::@1 -(label) init_multiply::@2 -(label) init_multiply::@3 -(label) init_multiply::@4 -(label) init_multiply::@5 -(label) init_multiply::@6 -(label) init_multiply::@7 -(label) init_multiply::@8 -(label) init_multiply::@return -(byte) init_multiply::c -(byte) init_multiply::c#0 -(byte) init_multiply::c#1 -(byte) init_multiply::c#2 -(byte) init_multiply::c#3 -(byte) init_multiply::c#4 -(byte) init_multiply::dir -(byte) init_multiply::dir#0 -(byte) init_multiply::dir#1 -(byte) init_multiply::dir#2 -(byte) init_multiply::dir#3 -(word) init_multiply::sqr -(word) init_multiply::sqr#0 -(word) init_multiply::sqr#1 -(word) init_multiply::sqr#2 -(word) init_multiply::sqr#3 -(word) init_multiply::sqr#4 -(word) init_multiply::sqr#5 -(byte*) init_multiply::sqr1_hi -(byte*) init_multiply::sqr1_hi#0 -(byte*) init_multiply::sqr1_hi#1 -(byte*) init_multiply::sqr1_hi#2 -(byte*) init_multiply::sqr1_hi#3 -(byte*) init_multiply::sqr1_hi#4 -(byte*) init_multiply::sqr1_lo -(byte*) init_multiply::sqr1_lo#0 -(byte*) init_multiply::sqr1_lo#1 -(byte*) init_multiply::sqr1_lo#2 -(byte*) init_multiply::sqr1_lo#3 -(byte*) init_multiply::sqr1_lo#4 -(byte*) init_multiply::sqr2_hi -(byte*) init_multiply::sqr2_hi#0 -(byte*) init_multiply::sqr2_hi#1 -(byte*) init_multiply::sqr2_hi#2 -(byte*) init_multiply::sqr2_hi#3 -(byte*) init_multiply::sqr2_hi#4 -(byte*) init_multiply::sqr2_lo -(byte*) init_multiply::sqr2_lo#0 -(byte*) init_multiply::sqr2_lo#1 -(byte*) init_multiply::sqr2_lo#2 -(byte*) init_multiply::sqr2_lo#3 -(byte*) init_multiply::sqr2_lo#4 -(byte) init_multiply::x_2 -(byte) init_multiply::x_2#0 -(byte) init_multiply::x_2#1 -(byte) init_multiply::x_2#2 -(byte) init_multiply::x_2#3 -(byte) init_multiply::x_2#4 -(byte) init_multiply::x_255 -(byte) init_multiply::x_255#0 -(byte) init_multiply::x_255#1 -(byte) init_multiply::x_255#2 -(byte) init_multiply::x_255#3 -(byte) init_multiply::x_255#4 -(void()) init_multiply_asm() -(label) init_multiply_asm::@return -(byte*) init_multiply_asm::mem -(byte*) init_multiply_asm::mem#0 (byte*) line_cursor (byte*) line_cursor#0 (byte*) line_cursor#1 @@ -3194,36 +3099,276 @@ SYMBOL TABLE SSA (label) main::@5 (label) main::@6 (label) main::@return -(byte[512]) mul_sqr1_hi -(byte[512]) mul_sqr1_hi#0 -(byte[512]) mul_sqr1_lo -(byte[512]) mul_sqr1_lo#0 -(byte[512]) mul_sqr2_hi -(byte[512]) mul_sqr2_hi#0 -(byte[512]) mul_sqr2_lo -(byte[512]) mul_sqr2_lo#0 -(word()) multiply((byte) multiply::a , (byte) multiply::b) -(label) multiply::@return -(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 -(byte*) multiply::memB#0 -(word) multiply::return -(word) multiply::return#0 -(word) multiply::return#1 -(word) multiply::return#2 -(word) multiply::return#3 -(word) multiply::return#4 -(word) multiply::return#5 -(word) multiply::return#6 +(byte[512]) mula_sqr1_hi +(byte[512]) mula_sqr1_hi#0 +(byte[512]) mula_sqr1_lo +(byte[512]) mula_sqr1_lo#0 +(byte[512]) mula_sqr2_hi +(byte[512]) mula_sqr2_hi#0 +(byte[512]) mula_sqr2_lo +(byte[512]) mula_sqr2_lo#0 +(signed word()) mulf8s((signed byte) mulf8s::a , (signed byte) mulf8s::b) +(byte~) mulf8s::$0 +(byte~) mulf8s::$1 +(boolean~) mulf8s::$10 +(byte~) mulf8s::$12 +(byte~) mulf8s::$13 +(byte/signed byte/word/signed word/dword/signed dword~) mulf8s::$14 +(signed word~) mulf8s::$15 +(byte/signed byte/word/signed word/dword/signed dword~) mulf8s::$16 +(byte/signed byte/word/signed word/dword/signed dword~) mulf8s::$17 +(word~) mulf8s::$2 +(boolean~) mulf8s::$3 +(boolean~) mulf8s::$4 +(byte~) mulf8s::$6 +(byte~) mulf8s::$7 +(byte/signed byte/word/signed word/dword/signed dword~) mulf8s::$8 +(boolean~) mulf8s::$9 +(label) mulf8s::@1 +(label) mulf8s::@2 +(label) mulf8s::@3 +(label) mulf8s::@4 +(label) mulf8s::@6 +(label) mulf8s::@return +(signed byte) mulf8s::a +(signed byte) mulf8s::a#0 +(signed byte) mulf8s::a#1 +(signed byte) mulf8s::a#2 +(signed byte) mulf8s::a#3 +(signed byte) mulf8s::a#4 +(signed byte) mulf8s::a#5 +(signed byte) mulf8s::b +(signed byte) mulf8s::b#0 +(signed byte) mulf8s::b#1 +(signed byte) mulf8s::b#2 +(signed byte) mulf8s::b#3 +(signed byte) mulf8s::b#4 +(word) mulf8s::m +(word) mulf8s::m#0 +(word) mulf8s::m#1 +(word) mulf8s::m#2 +(word) mulf8s::m#3 +(word) mulf8s::m#4 +(word) mulf8s::m#5 +(word) mulf8s::m#6 +(signed word) mulf8s::return +(signed word) mulf8s::return#0 +(signed word) mulf8s::return#1 +(signed word) mulf8s::return#2 +(signed word) mulf8s::return#3 +(signed word) mulf8s::return#4 +(word()) mulf8u((byte) mulf8u::a , (byte) mulf8u::b) +(label) mulf8u::@return +(byte) mulf8u::a +(byte) mulf8u::a#0 +(byte) mulf8u::a#1 +(byte) mulf8u::a#2 +(byte) mulf8u::b +(byte) mulf8u::b#0 +(byte) mulf8u::b#1 +(byte) mulf8u::b#2 +(byte*) mulf8u::memA +(byte*) mulf8u::memA#0 +(byte*) mulf8u::memB +(byte*) mulf8u::memB#0 +(word) mulf8u::return +(word) mulf8u::return#0 +(word) mulf8u::return#1 +(word) mulf8u::return#2 +(word) mulf8u::return#3 +(word) mulf8u::return#4 +(word) mulf8u::return#5 +(word) mulf8u::return#6 +(void()) mulf_init() +(byte*~) mulf_init::$0 +(byte*~) mulf_init::$1 +(signed byte/signed word/signed dword~) mulf_init::$10 +(byte~) mulf_init::$11 +(byte/word~) mulf_init::$12 +(boolean~) mulf_init::$13 +(boolean~) mulf_init::$14 +(byte*~) mulf_init::$15 +(boolean~) mulf_init::$16 +(byte*~) mulf_init::$17 +(byte*~) mulf_init::$18 +(byte*~) mulf_init::$19 +(byte~) mulf_init::$2 +(byte*~) mulf_init::$20 +(boolean~) mulf_init::$3 +(boolean~) mulf_init::$4 +(byte~) mulf_init::$5 +(byte~) mulf_init::$6 +(word~) mulf_init::$7 +(byte*~) mulf_init::$8 +(boolean~) mulf_init::$9 +(label) mulf_init::@1 +(label) mulf_init::@2 +(label) mulf_init::@3 +(label) mulf_init::@4 +(label) mulf_init::@5 +(label) mulf_init::@6 +(label) mulf_init::@7 +(label) mulf_init::@8 +(label) mulf_init::@return +(byte) mulf_init::c +(byte) mulf_init::c#0 +(byte) mulf_init::c#1 +(byte) mulf_init::c#2 +(byte) mulf_init::c#3 +(byte) mulf_init::c#4 +(byte) mulf_init::dir +(byte) mulf_init::dir#0 +(byte) mulf_init::dir#1 +(byte) mulf_init::dir#2 +(byte) mulf_init::dir#3 +(word) mulf_init::sqr +(word) mulf_init::sqr#0 +(word) mulf_init::sqr#1 +(word) mulf_init::sqr#2 +(word) mulf_init::sqr#3 +(word) mulf_init::sqr#4 +(word) mulf_init::sqr#5 +(byte*) mulf_init::sqr1_hi +(byte*) mulf_init::sqr1_hi#0 +(byte*) mulf_init::sqr1_hi#1 +(byte*) mulf_init::sqr1_hi#2 +(byte*) mulf_init::sqr1_hi#3 +(byte*) mulf_init::sqr1_hi#4 +(byte*) mulf_init::sqr1_lo +(byte*) mulf_init::sqr1_lo#0 +(byte*) mulf_init::sqr1_lo#1 +(byte*) mulf_init::sqr1_lo#2 +(byte*) mulf_init::sqr1_lo#3 +(byte*) mulf_init::sqr1_lo#4 +(byte*) mulf_init::sqr2_hi +(byte*) mulf_init::sqr2_hi#0 +(byte*) mulf_init::sqr2_hi#1 +(byte*) mulf_init::sqr2_hi#2 +(byte*) mulf_init::sqr2_hi#3 +(byte*) mulf_init::sqr2_hi#4 +(byte*) mulf_init::sqr2_lo +(byte*) mulf_init::sqr2_lo#0 +(byte*) mulf_init::sqr2_lo#1 +(byte*) mulf_init::sqr2_lo#2 +(byte*) mulf_init::sqr2_lo#3 +(byte*) mulf_init::sqr2_lo#4 +(byte) mulf_init::x_2 +(byte) mulf_init::x_2#0 +(byte) mulf_init::x_2#1 +(byte) mulf_init::x_2#2 +(byte) mulf_init::x_2#3 +(byte) mulf_init::x_2#4 +(byte) mulf_init::x_255 +(byte) mulf_init::x_255#0 +(byte) mulf_init::x_255#1 +(byte) mulf_init::x_255#2 +(byte) mulf_init::x_255#3 +(byte) mulf_init::x_255#4 +(void()) mulf_init_asm() +(label) mulf_init_asm::@return +(byte*) mulf_init_asm::mem +(byte*) mulf_init_asm::mem#0 +(byte[512]) mulf_sqr1_hi +(byte[512]) mulf_sqr1_hi#0 +(byte[512]) mulf_sqr1_lo +(byte[512]) mulf_sqr1_lo#0 +(byte[512]) mulf_sqr2_hi +(byte[512]) mulf_sqr2_hi#0 +(byte[512]) mulf_sqr2_lo +(byte[512]) mulf_sqr2_lo#0 +(signed word()) muls8s((signed byte) muls8s::a , (signed byte) muls8s::b) +(boolean~) muls8s::$0 +(boolean~) muls8s::$1 +(signed word~) muls8s::$2 +(boolean~) muls8s::$3 +(boolean~) muls8s::$4 +(boolean~) muls8s::$5 +(signed word~) muls8s::$6 +(boolean~) muls8s::$7 +(label) muls8s::@1 +(label) muls8s::@2 +(label) muls8s::@3 +(label) muls8s::@4 +(label) muls8s::@5 +(label) muls8s::@6 +(label) muls8s::@9 +(label) muls8s::@return +(signed byte) muls8s::a +(signed byte) muls8s::a#0 +(signed byte) muls8s::a#1 +(signed byte) muls8s::a#2 +(signed byte) muls8s::a#3 +(signed byte) muls8s::a#4 +(signed byte) muls8s::a#5 +(signed byte) muls8s::a#6 +(signed byte) muls8s::b +(signed byte) muls8s::b#0 +(signed byte) muls8s::b#1 +(signed byte) muls8s::b#2 +(signed byte) muls8s::b#3 +(signed byte) muls8s::b#4 +(signed byte) muls8s::b#5 +(signed byte) muls8s::b#6 +(signed byte) muls8s::i +(signed byte) muls8s::i#0 +(signed byte) muls8s::i#1 +(signed byte) muls8s::i#2 +(signed byte) muls8s::j +(signed byte) muls8s::j#0 +(signed byte) muls8s::j#1 +(signed byte) muls8s::j#2 +(signed word) muls8s::m +(signed word) muls8s::m#0 +(signed word) muls8s::m#1 +(signed word) muls8s::m#2 +(signed word) muls8s::m#3 +(signed word) muls8s::m#4 +(signed word) muls8s::m#5 +(signed word) muls8s::m#6 +(signed word) muls8s::m#7 +(signed word) muls8s::m#8 +(signed word) muls8s::m#9 +(signed word) muls8s::return +(signed word) muls8s::return#0 +(signed word) muls8s::return#1 +(signed word) muls8s::return#2 +(signed word) muls8s::return#3 +(signed word) muls8s::return#4 +(word()) muls8u((byte) muls8u::a , (byte) muls8u::b) +(boolean~) muls8u::$0 +(boolean~) muls8u::$1 +(word~) muls8u::$2 +(boolean~) muls8u::$3 +(label) muls8u::@1 +(label) muls8u::@2 +(label) muls8u::@3 +(label) muls8u::@return +(byte) muls8u::a +(byte) muls8u::a#0 +(byte) muls8u::a#1 +(byte) muls8u::a#2 +(byte) muls8u::a#3 +(byte) muls8u::b +(byte) muls8u::b#0 +(byte) muls8u::b#1 +(byte) muls8u::b#2 +(byte) muls8u::b#3 +(byte) muls8u::i +(byte) muls8u::i#0 +(byte) muls8u::i#1 +(byte) muls8u::i#2 +(word) muls8u::m +(word) muls8u::m#0 +(word) muls8u::m#1 +(word) muls8u::m#2 +(word) muls8u::m#3 +(word) muls8u::m#4 +(word) muls8u::return +(word) muls8u::return#0 +(word) muls8u::return#1 +(word) muls8u::return#2 +(word) muls8u::return#3 +(word) muls8u::return#4 (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 @@ -3464,56 +3609,6 @@ SYMBOL TABLE SSA (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/dword/signed dword~) signed_multiply::$14 -(signed word~) signed_multiply::$15 -(byte/signed byte/word/signed word/dword/signed dword~) signed_multiply::$16 -(byte/signed byte/word/signed word/dword/signed dword~) 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/dword/signed dword~) 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 @@ -3606,110 +3701,17 @@ SYMBOL TABLE SSA (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 -(word~) slow_multiply::$2 -(boolean~) slow_multiply::$3 -(label) slow_multiply::@1 -(label) slow_multiply::@2 -(label) slow_multiply::@3 -(label) slow_multiply::@return -(byte) slow_multiply::a -(byte) slow_multiply::a#0 -(byte) slow_multiply::a#1 -(byte) slow_multiply::a#2 -(byte) slow_multiply::a#3 -(byte) slow_multiply::b -(byte) slow_multiply::b#0 -(byte) slow_multiply::b#1 -(byte) slow_multiply::b#2 -(byte) slow_multiply::b#3 -(byte) slow_multiply::i -(byte) slow_multiply::i#0 -(byte) slow_multiply::i#1 -(byte) slow_multiply::i#2 -(word) slow_multiply::m -(word) slow_multiply::m#0 -(word) slow_multiply::m#1 -(word) slow_multiply::m#2 -(word) slow_multiply::m#3 -(word) slow_multiply::m#4 -(word) slow_multiply::return -(word) slow_multiply::return#0 -(word) slow_multiply::return#1 -(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/dword/signed dword) 0 from (boolean~) print_sword::$0 ← (signed word) print_sword::w#3 < (byte/signed byte/word/signed word/dword/signed dword) 0 Inversing boolean not (boolean~) print_sbyte::$1 ← (signed byte) print_sbyte::b#3 >= (byte/signed byte/word/signed word/dword/signed dword) 0 from (boolean~) print_sbyte::$0 ← (signed byte) print_sbyte::b#3 < (byte/signed byte/word/signed word/dword/signed dword) 0 -Inversing boolean not (boolean~) init_multiply::$4 ← (byte~) init_multiply::$2 != (byte/signed byte/word/signed word/dword/signed dword) 0 from (boolean~) init_multiply::$3 ← (byte~) init_multiply::$2 == (byte/signed byte/word/signed word/dword/signed dword) 0 -Inversing boolean not (boolean~) init_multiply::$14 ← (byte) init_multiply::x_255#1 != (byte/signed byte/word/signed word/dword/signed dword) 0 from (boolean~) init_multiply::$13 ← (byte) init_multiply::x_255#1 == (byte/signed byte/word/signed word/dword/signed dword) 0 -Inversing boolean not (boolean~) signed_multiply::$4 ← (signed byte) signed_multiply::a#2 >= (byte/signed byte/word/signed word/dword/signed dword) 0 from (boolean~) signed_multiply::$3 ← (signed byte) signed_multiply::a#2 < (byte/signed byte/word/signed word/dword/signed dword) 0 -Inversing boolean not (boolean~) signed_multiply::$10 ← (signed byte) signed_multiply::b#2 >= (byte/signed byte/word/signed word/dword/signed dword) 0 from (boolean~) signed_multiply::$9 ← (signed byte) signed_multiply::b#2 < (byte/signed byte/word/signed word/dword/signed dword) 0 -Inversing boolean not (boolean~) slow_multiply::$1 ← (byte) slow_multiply::a#1 == (byte/signed byte/word/signed word/dword/signed dword) 0 from (boolean~) slow_multiply::$0 ← (byte) slow_multiply::a#1 != (byte/signed byte/word/signed word/dword/signed dword) 0 -Inversing boolean not (boolean~) slow_signed_multiply::$1 ← (signed byte) slow_signed_multiply::a#1 >= (byte/signed byte/word/signed word/dword/signed dword) 0 from (boolean~) slow_signed_multiply::$0 ← (signed byte) slow_signed_multiply::a#1 < (byte/signed byte/word/signed word/dword/signed dword) 0 -Inversing boolean not (boolean~) slow_signed_multiply::$5 ← (signed byte) slow_signed_multiply::a#2 <= (byte/signed byte/word/signed word/dword/signed dword) 0 from (boolean~) slow_signed_multiply::$4 ← (signed byte) slow_signed_multiply::a#2 > (byte/signed byte/word/signed word/dword/signed dword) 0 +Inversing boolean not (boolean~) mulf_init::$4 ← (byte~) mulf_init::$2 != (byte/signed byte/word/signed word/dword/signed dword) 0 from (boolean~) mulf_init::$3 ← (byte~) mulf_init::$2 == (byte/signed byte/word/signed word/dword/signed dword) 0 +Inversing boolean not (boolean~) mulf_init::$14 ← (byte) mulf_init::x_255#1 != (byte/signed byte/word/signed word/dword/signed dword) 0 from (boolean~) mulf_init::$13 ← (byte) mulf_init::x_255#1 == (byte/signed byte/word/signed word/dword/signed dword) 0 +Inversing boolean not (boolean~) mulf8s::$4 ← (signed byte) mulf8s::a#2 >= (byte/signed byte/word/signed word/dword/signed dword) 0 from (boolean~) mulf8s::$3 ← (signed byte) mulf8s::a#2 < (byte/signed byte/word/signed word/dword/signed dword) 0 +Inversing boolean not (boolean~) mulf8s::$10 ← (signed byte) mulf8s::b#2 >= (byte/signed byte/word/signed word/dword/signed dword) 0 from (boolean~) mulf8s::$9 ← (signed byte) mulf8s::b#2 < (byte/signed byte/word/signed word/dword/signed dword) 0 +Inversing boolean not (boolean~) muls8u::$1 ← (byte) muls8u::a#1 == (byte/signed byte/word/signed word/dword/signed dword) 0 from (boolean~) muls8u::$0 ← (byte) muls8u::a#1 != (byte/signed byte/word/signed word/dword/signed dword) 0 +Inversing boolean not (boolean~) muls8s::$1 ← (signed byte) muls8s::a#1 >= (byte/signed byte/word/signed word/dword/signed dword) 0 from (boolean~) muls8s::$0 ← (signed byte) muls8s::a#1 < (byte/signed byte/word/signed word/dword/signed dword) 0 +Inversing boolean not (boolean~) muls8s::$5 ← (signed byte) muls8s::a#2 <= (byte/signed byte/word/signed word/dword/signed dword) 0 from (boolean~) muls8s::$4 ← (signed byte) muls8s::a#2 > (byte/signed byte/word/signed word/dword/signed dword) 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 @@ -3738,14 +3740,14 @@ Not aliassing across scopes: print_char::ch#4 print_char::ch#2 Not aliassing across scopes: char_cursor#78 char_cursor#129 Not aliassing across scopes: print_cls::sc#0 SCREEN#0 Not aliassing across scopes: line_cursor#3 SCREEN#0 -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#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: mulf_init::sqr2_hi#0 mulf_sqr2_hi#0 +Not aliassing across scopes: mulf_init::sqr2_lo#0 mulf_sqr2_lo#0 +Not aliassing across scopes: mulf8u::a#2 mulf8u::a#0 +Not aliassing across scopes: mulf8u::b#2 mulf8u::b#0 +Not aliassing across scopes: mulf8s::a#1 mulf8s::a#0 +Not aliassing across scopes: mulf8s::b#1 mulf8s::b#0 +Not aliassing across scopes: mulf8u::return#2 mulf8u::return#1 +Not aliassing across scopes: mulf8s::$2 mulf8u::return#5 Not aliassing across scopes: BGCOL#1 BGCOL#5 Not aliassing across scopes: line_cursor#46 line_cursor#56 Not aliassing across scopes: char_cursor#130 char_cursor#140 @@ -3757,21 +3759,21 @@ Not aliassing across scopes: char_cursor#83 char_cursor#34 Not aliassing across scopes: line_cursor#29 line_cursor#13 Not aliassing across scopes: char_cursor#84 char_cursor#48 Not aliassing across scopes: line_cursor#30 line_cursor#18 -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: 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: muls8u::a#1 muls8u::a#0 +Not aliassing across scopes: muls8u::b#3 muls8u::b#0 +Not aliassing identity: muls8u::b#1 muls8u::b#1 +Not aliassing identity: muls8u::a#2 muls8u::a#2 +Not aliassing across scopes: muls8s::a#1 muls8s::a#0 +Not aliassing across scopes: muls8s::b#5 muls8s::b#0 +Not aliassing identity: muls8s::b#1 muls8s::b#1 +Not aliassing identity: muls8s::a#3 muls8s::a#3 +Not aliassing identity: muls8s::b#2 muls8s::b#2 +Not aliassing identity: muls8s::a#4 muls8s::a#4 Not aliassing across scopes: BGCOL#9 BGCOL#14 Not aliassing across scopes: char_cursor#153 char_cursor#131 Not aliassing across scopes: line_cursor#85 line_cursor#47 -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: multiply_tables_compare::asm_sqr#0 mula_sqr1_lo#0 +Not aliassing across scopes: multiply_tables_compare::kc_sqr#0 mulf_sqr1_lo#0 Not aliassing across scopes: char_cursor#86 char_cursor#2 Not aliassing across scopes: char_cursor#87 char_cursor#13 Not aliassing across scopes: char_cursor#88 char_cursor#2 @@ -3782,14 +3784,14 @@ Not aliassing across scopes: char_cursor#92 char_cursor#4 Not aliassing across scopes: BGCOL#23 BGCOL#27 Not aliassing across scopes: char_cursor#163 char_cursor#22 Not aliassing across scopes: line_cursor#91 line_cursor#6 -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#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: muls8u::a#0 multiply_results_compare::a#2 +Not aliassing across scopes: muls8u::b#0 multiply_results_compare::b#2 +Not aliassing across scopes: muls8u::return#2 muls8u::return#1 +Not aliassing across scopes: multiply_results_compare::$0 muls8u::return#4 +Not aliassing across scopes: mulf8u::a#1 multiply_results_compare::a#3 +Not aliassing across scopes: mulf8u::b#1 multiply_results_compare::b#3 +Not aliassing across scopes: mulf8u::return#3 mulf8u::return#1 +Not aliassing across scopes: multiply_results_compare::$1 mulf8u::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 @@ -3822,14 +3824,14 @@ Not aliassing across scopes: char_cursor#105 char_cursor#4 Not aliassing across scopes: BGCOL#25 BGCOL#28 Not aliassing across scopes: char_cursor#164 char_cursor#23 Not aliassing across scopes: line_cursor#93 line_cursor#7 -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: muls8s::a#0 signed_multiply_results_compare::a#2 +Not aliassing across scopes: muls8s::b#0 signed_multiply_results_compare::b#2 +Not aliassing across scopes: muls8s::return#2 muls8s::return#1 +Not aliassing across scopes: signed_multiply_results_compare::$2 muls8s::return#4 +Not aliassing across scopes: mulf8s::a#0 signed_multiply_results_compare::a#3 +Not aliassing across scopes: mulf8s::b#0 signed_multiply_results_compare::b#3 +Not aliassing across scopes: mulf8s::return#2 mulf8s::return#1 +Not aliassing across scopes: signed_multiply_results_compare::$3 mulf8s::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 @@ -3887,30 +3889,30 @@ Alias (byte*) char_cursor#14 = (byte*) char_cursor#75 Alias (byte*) char_cursor#15 = (byte*) char_cursor#76 (byte*) char_cursor#77 (byte*) char_cursor#16 Alias (byte*) char_cursor#17 = (byte*) char_cursor#79 (byte*) char_cursor#18 Alias (byte*) line_cursor#26 = (byte*) char_cursor#19 (byte*) line_cursor#3 (byte*) char_cursor#80 (byte*) line_cursor#4 (byte*) char_cursor#20 -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 -Alias (byte) init_multiply::x_2#3 = (byte) init_multiply::x_2#4 -Alias (word) init_multiply::sqr#4 = (word) init_multiply::sqr#5 -Alias (byte*) init_multiply::sqr1_lo#3 = (byte*) init_multiply::sqr1_lo#4 -Alias (byte*) init_multiply::sqr1_hi#3 = (byte*) init_multiply::sqr1_hi#4 -Alias (byte) init_multiply::c#1 = (byte) init_multiply::c#4 -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#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/dword/signed dword~) signed_multiply::$16 = (byte/signed byte/word/signed word/dword/signed dword~) 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/dword/signed dword~) signed_multiply::$17 = (byte/signed byte/word/signed word/dword/signed dword~) signed_multiply::$14 +Alias (byte*) mulf_init::sqr1_hi#0 = (byte*~) mulf_init::$0 +Alias (byte*) mulf_init::sqr1_lo#0 = (byte*~) mulf_init::$1 +Alias (word) mulf_init::sqr#1 = (word~) mulf_init::$7 +Alias (byte) mulf_init::x_2#3 = (byte) mulf_init::x_2#4 +Alias (word) mulf_init::sqr#4 = (word) mulf_init::sqr#5 +Alias (byte*) mulf_init::sqr1_lo#3 = (byte*) mulf_init::sqr1_lo#4 +Alias (byte*) mulf_init::sqr1_hi#3 = (byte*) mulf_init::sqr1_hi#4 +Alias (byte) mulf_init::c#1 = (byte) mulf_init::c#4 +Alias (byte) mulf_init::x_255#0 = (byte~) mulf_init::$11 +Alias (byte) mulf_init::x_255#1 = (byte/word~) mulf_init::$12 (byte) mulf_init::x_255#4 +Alias (byte*) mulf_init::sqr2_lo#2 = (byte*) mulf_init::sqr2_lo#4 +Alias (byte*) mulf_init::sqr2_hi#1 = (byte*) mulf_init::sqr2_hi#4 +Alias (word) mulf8u::return#0 = (word) mulf8u::return#4 (word) mulf8u::return#1 +Alias (byte) mulf8u::a#0 = (byte~) mulf8s::$0 +Alias (byte) mulf8u::b#0 = (byte~) mulf8s::$1 +Alias (word) mulf8u::return#2 = (word) mulf8u::return#5 +Alias (signed byte) mulf8s::a#1 = (signed byte) mulf8s::a#2 (signed byte) mulf8s::a#5 +Alias (signed byte) mulf8s::b#1 = (signed byte) mulf8s::b#4 (signed byte) mulf8s::b#3 +Alias (word) mulf8s::m#0 = (word~) mulf8s::$2 (word) mulf8s::m#3 +Alias (byte/signed byte/word/signed word/dword/signed dword~) mulf8s::$16 = (byte/signed byte/word/signed word/dword/signed dword~) mulf8s::$8 +Alias (signed word) mulf8s::return#0 = (signed word~) mulf8s::$15 (signed word) mulf8s::return#3 (signed word) mulf8s::return#1 +Alias (word) mulf8s::m#5 = (word) mulf8s::m#6 +Alias (signed byte) mulf8s::a#3 = (signed byte) mulf8s::a#4 +Alias (byte/signed byte/word/signed word/dword/signed dword~) mulf8s::$17 = (byte/signed byte/word/signed word/dword/signed dword~) mulf8s::$14 Alias (byte*) BGCOL#1 = (byte*) BGCOL#22 (byte*) BGCOL#17 (byte*) BGCOL#14 (byte*) BGCOL#27 (byte*) BGCOL#28 Alias (byte*) line_cursor#27 = (byte*) line_cursor#5 (byte*) line_cursor#57 (byte*) line_cursor#47 Alias (byte*) char_cursor#131 = (byte*) char_cursor#21 (byte*) char_cursor#81 (byte*) char_cursor#144 @@ -3920,17 +3922,17 @@ Alias (byte*) char_cursor#23 = (byte*) char_cursor#83 Alias (byte*) line_cursor#29 = (byte*) line_cursor#7 Alias (byte*) char_cursor#24 = (byte*) char_cursor#84 (byte*) char_cursor#85 (byte*) char_cursor#25 Alias (byte*) line_cursor#30 = (byte*) line_cursor#8 (byte*) line_cursor#31 (byte*) line_cursor#9 -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 (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 (word) muls8u::return#0 = (word) muls8u::m#2 (word) muls8u::return#3 (word) muls8u::return#1 +Alias (word) muls8u::m#0 = (word) muls8u::m#4 +Alias (byte) muls8u::b#2 = (byte) muls8u::b#3 +Alias (byte) muls8u::a#1 = (byte) muls8u::a#3 +Alias (word) muls8u::m#1 = (word~) muls8u::$2 +Alias (signed byte) muls8s::a#1 = (signed byte) muls8s::a#2 (signed byte) muls8s::a#5 (signed byte) muls8s::a#6 +Alias (signed word) muls8s::m#0 = (signed word) muls8s::m#9 (signed word) muls8s::m#6 (signed word) muls8s::m#7 (signed word) muls8s::m#8 +Alias (signed byte) muls8s::b#3 = (signed byte) muls8s::b#6 (signed byte) muls8s::b#5 (signed byte) muls8s::b#4 +Alias (signed word) muls8s::m#1 = (signed word~) muls8s::$2 +Alias (signed word) muls8s::return#0 = (signed word) muls8s::m#4 (signed word) muls8s::return#3 (signed word) muls8s::return#1 +Alias (signed word) muls8s::m#2 = (signed word~) muls8s::$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 @@ -3948,14 +3950,14 @@ Alias (byte*) line_cursor#10 = (byte*) line_cursor#32 Alias (byte*) char_cursor#31 = (byte*) char_cursor#91 Alias (byte*) line_cursor#11 = (byte*) line_cursor#33 Alias (byte*) char_cursor#32 = (byte*) char_cursor#92 -Alias (word) slow_multiply::return#2 = (word) slow_multiply::return#4 +Alias (word) muls8u::return#2 = (word) muls8u::return#4 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#134 = (byte*) char_cursor#154 (byte*) char_cursor#159 (byte*) char_cursor#147 (byte*) char_cursor#155 (byte*) char_cursor#148 (byte*) char_cursor#135 Alias (byte*) line_cursor#50 = (byte*) line_cursor#70 (byte*) line_cursor#79 (byte*) line_cursor#60 (byte*) line_cursor#80 (byte*) line_cursor#71 (byte*) line_cursor#61 (byte*) line_cursor#51 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) mulf8u::return#3 = (word) mulf8u::return#6 Alias (word) multiply_results_compare::ma#0 = (word~) multiply_results_compare::$1 (word) multiply_results_compare::ma#1 Alias (byte*) char_cursor#33 = (byte*) char_cursor#93 Alias (byte*) line_cursor#12 = (byte*) line_cursor#34 @@ -3981,14 +3983,14 @@ Alias (byte*) line_cursor#15 = (byte*) line_cursor#37 (byte*) line_cursor#38 (by Alias (byte*) char_cursor#105 = (byte*) char_cursor#45 (byte*) char_cursor#106 (byte*) char_cursor#46 Alias (signed byte) signed_multiply_results_compare::a#0 = (signed byte/signed word/signed dword~) signed_multiply_results_compare::$0 Alias (signed byte) signed_multiply_results_compare::b#0 = (signed byte/signed word/signed dword~) signed_multiply_results_compare::$1 -Alias (signed word) slow_signed_multiply::return#2 = (signed word) slow_signed_multiply::return#4 +Alias (signed word) muls8s::return#2 = (signed word) muls8s::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#137 = (byte*) char_cursor#156 (byte*) char_cursor#160 (byte*) char_cursor#149 (byte*) char_cursor#157 (byte*) char_cursor#150 (byte*) char_cursor#138 Alias (byte*) line_cursor#53 = (byte*) line_cursor#73 (byte*) line_cursor#82 (byte*) line_cursor#63 (byte*) line_cursor#83 (byte*) line_cursor#74 (byte*) line_cursor#64 (byte*) line_cursor#54 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) mulf8s::return#2 = (signed word) mulf8s::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#107 = (byte*) char_cursor#47 Alias (byte*) line_cursor#17 = (byte*) line_cursor#39 @@ -4039,14 +4041,14 @@ Not aliassing across scopes: print_char::ch#4 print_char::ch#2 Not aliassing across scopes: char_cursor#78 char_cursor#129 Not aliassing across scopes: print_cls::sc#0 SCREEN#0 Not aliassing across scopes: line_cursor#26 SCREEN#0 -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#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: mulf_init::sqr2_hi#0 mulf_sqr2_hi#0 +Not aliassing across scopes: mulf_init::sqr2_lo#0 mulf_sqr2_lo#0 +Not aliassing across scopes: mulf8u::a#2 mulf8u::a#0 +Not aliassing across scopes: mulf8u::b#2 mulf8u::b#0 +Not aliassing across scopes: mulf8s::a#1 mulf8s::a#0 +Not aliassing across scopes: mulf8s::b#1 mulf8s::b#0 +Not aliassing across scopes: mulf8u::return#2 mulf8u::return#0 +Not aliassing across scopes: mulf8s::m#0 mulf8u::return#2 Not aliassing across scopes: BGCOL#1 BGCOL#0 Not aliassing across scopes: line_cursor#46 SCREEN#0 Not aliassing across scopes: char_cursor#130 SCREEN#0 @@ -4058,21 +4060,21 @@ Not aliassing across scopes: char_cursor#23 char_cursor#34 Not aliassing across scopes: line_cursor#29 line_cursor#13 Not aliassing across scopes: char_cursor#24 char_cursor#108 Not aliassing across scopes: line_cursor#30 line_cursor#18 -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: 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: muls8u::a#1 muls8u::a#0 +Not aliassing across scopes: muls8u::b#2 muls8u::b#0 +Not aliassing identity: muls8u::b#1 muls8u::b#1 +Not aliassing identity: muls8u::a#2 muls8u::a#2 +Not aliassing across scopes: muls8s::a#1 muls8s::a#0 +Not aliassing across scopes: muls8s::b#3 muls8s::b#0 +Not aliassing identity: muls8s::b#1 muls8s::b#1 +Not aliassing identity: muls8s::a#3 muls8s::a#3 +Not aliassing identity: muls8s::b#2 muls8s::b#2 +Not aliassing identity: muls8s::a#4 muls8s::a#4 Not aliassing across scopes: BGCOL#9 BGCOL#1 Not aliassing across scopes: char_cursor#153 char_cursor#131 Not aliassing across scopes: line_cursor#85 line_cursor#27 -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: multiply_tables_compare::asm_sqr#0 mula_sqr1_lo#0 +Not aliassing across scopes: multiply_tables_compare::kc_sqr#0 mulf_sqr1_lo#0 Not aliassing across scopes: char_cursor#26 char_cursor#122 Not aliassing across scopes: char_cursor#27 char_cursor#12 Not aliassing across scopes: char_cursor#28 char_cursor#122 @@ -4083,14 +4085,14 @@ Not aliassing across scopes: char_cursor#32 line_cursor#1 Not aliassing across scopes: BGCOL#23 BGCOL#1 Not aliassing across scopes: char_cursor#163 char_cursor#22 Not aliassing across scopes: line_cursor#91 line_cursor#28 -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#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: muls8u::a#0 multiply_results_compare::a#2 +Not aliassing across scopes: muls8u::b#0 multiply_results_compare::b#2 +Not aliassing across scopes: muls8u::return#2 muls8u::return#0 +Not aliassing across scopes: multiply_results_compare::ms#0 muls8u::return#2 +Not aliassing across scopes: mulf8u::a#1 multiply_results_compare::a#2 +Not aliassing across scopes: mulf8u::b#1 multiply_results_compare::b#2 +Not aliassing across scopes: mulf8u::return#3 mulf8u::return#0 +Not aliassing across scopes: multiply_results_compare::ma#0 mulf8u::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 @@ -4123,14 +4125,14 @@ Not aliassing across scopes: char_cursor#105 line_cursor#1 Not aliassing across scopes: BGCOL#25 BGCOL#1 Not aliassing across scopes: char_cursor#164 char_cursor#23 Not aliassing across scopes: line_cursor#93 line_cursor#29 -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: muls8s::a#0 signed_multiply_results_compare::a#2 +Not aliassing across scopes: muls8s::b#0 signed_multiply_results_compare::b#2 +Not aliassing across scopes: muls8s::return#2 muls8s::return#0 +Not aliassing across scopes: signed_multiply_results_compare::ms#0 muls8s::return#2 +Not aliassing across scopes: mulf8s::a#0 signed_multiply_results_compare::a#2 +Not aliassing across scopes: mulf8s::b#0 signed_multiply_results_compare::b#2 +Not aliassing across scopes: mulf8s::return#2 mulf8s::return#0 +Not aliassing across scopes: signed_multiply_results_compare::ma#0 mulf8s::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 @@ -4162,14 +4164,14 @@ Not aliassing across scopes: line_cursor#20 line_cursor#1 Not aliassing across scopes: char_cursor#119 line_cursor#1 Not aliassing across scopes: line_cursor#22 line_cursor#30 Not aliassing across scopes: char_cursor#121 char_cursor#24 -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 +Alias (byte*) mulf_init::sqr1_lo#2 = (byte*) mulf_init::sqr1_lo#3 +Alias (byte*) mulf_init::sqr1_hi#2 = (byte*) mulf_init::sqr1_hi#3 +Alias (byte) mulf_init::c#1 = (byte) mulf_init::c#3 +Alias (byte*) mulf_init::sqr2_lo#2 = (byte*) mulf_init::sqr2_lo#3 +Alias (byte) mulf_init::x_255#1 = (byte) mulf_init::x_255#3 +Alias (byte*) mulf_init::sqr2_hi#1 = (byte*) mulf_init::sqr2_hi#3 +Alias (signed byte) mulf8s::b#1 = (signed byte) mulf8s::b#2 +Alias (signed byte) mulf8s::a#1 = (signed byte) mulf8s::a#3 Succesful SSA optimization Pass2AliasElimination Not aliassing across scopes: print_str::str#16 print_str::str#5 Not aliassing across scopes: char_cursor#141 char_cursor#136 @@ -4195,14 +4197,14 @@ Not aliassing across scopes: print_char::ch#4 print_char::ch#2 Not aliassing across scopes: char_cursor#78 char_cursor#129 Not aliassing across scopes: print_cls::sc#0 SCREEN#0 Not aliassing across scopes: line_cursor#26 SCREEN#0 -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#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: mulf_init::sqr2_hi#0 mulf_sqr2_hi#0 +Not aliassing across scopes: mulf_init::sqr2_lo#0 mulf_sqr2_lo#0 +Not aliassing across scopes: mulf8u::a#2 mulf8u::a#0 +Not aliassing across scopes: mulf8u::b#2 mulf8u::b#0 +Not aliassing across scopes: mulf8s::a#1 mulf8s::a#0 +Not aliassing across scopes: mulf8s::b#1 mulf8s::b#0 +Not aliassing across scopes: mulf8u::return#2 mulf8u::return#0 +Not aliassing across scopes: mulf8s::m#0 mulf8u::return#2 Not aliassing across scopes: BGCOL#1 BGCOL#0 Not aliassing across scopes: line_cursor#46 SCREEN#0 Not aliassing across scopes: char_cursor#130 SCREEN#0 @@ -4214,21 +4216,21 @@ Not aliassing across scopes: char_cursor#23 char_cursor#34 Not aliassing across scopes: line_cursor#29 line_cursor#13 Not aliassing across scopes: char_cursor#24 char_cursor#108 Not aliassing across scopes: line_cursor#30 line_cursor#18 -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: 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: muls8u::a#1 muls8u::a#0 +Not aliassing across scopes: muls8u::b#2 muls8u::b#0 +Not aliassing identity: muls8u::b#1 muls8u::b#1 +Not aliassing identity: muls8u::a#2 muls8u::a#2 +Not aliassing across scopes: muls8s::a#1 muls8s::a#0 +Not aliassing across scopes: muls8s::b#3 muls8s::b#0 +Not aliassing identity: muls8s::b#1 muls8s::b#1 +Not aliassing identity: muls8s::a#3 muls8s::a#3 +Not aliassing identity: muls8s::b#2 muls8s::b#2 +Not aliassing identity: muls8s::a#4 muls8s::a#4 Not aliassing across scopes: BGCOL#9 BGCOL#1 Not aliassing across scopes: char_cursor#153 char_cursor#131 Not aliassing across scopes: line_cursor#85 line_cursor#27 -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: multiply_tables_compare::asm_sqr#0 mula_sqr1_lo#0 +Not aliassing across scopes: multiply_tables_compare::kc_sqr#0 mulf_sqr1_lo#0 Not aliassing across scopes: char_cursor#26 char_cursor#122 Not aliassing across scopes: char_cursor#27 char_cursor#12 Not aliassing across scopes: char_cursor#28 char_cursor#122 @@ -4239,14 +4241,14 @@ Not aliassing across scopes: char_cursor#32 line_cursor#1 Not aliassing across scopes: BGCOL#23 BGCOL#1 Not aliassing across scopes: char_cursor#163 char_cursor#22 Not aliassing across scopes: line_cursor#91 line_cursor#28 -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#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: muls8u::a#0 multiply_results_compare::a#2 +Not aliassing across scopes: muls8u::b#0 multiply_results_compare::b#2 +Not aliassing across scopes: muls8u::return#2 muls8u::return#0 +Not aliassing across scopes: multiply_results_compare::ms#0 muls8u::return#2 +Not aliassing across scopes: mulf8u::a#1 multiply_results_compare::a#2 +Not aliassing across scopes: mulf8u::b#1 multiply_results_compare::b#2 +Not aliassing across scopes: mulf8u::return#3 mulf8u::return#0 +Not aliassing across scopes: multiply_results_compare::ma#0 mulf8u::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 @@ -4279,14 +4281,14 @@ Not aliassing across scopes: char_cursor#105 line_cursor#1 Not aliassing across scopes: BGCOL#25 BGCOL#1 Not aliassing across scopes: char_cursor#164 char_cursor#23 Not aliassing across scopes: line_cursor#93 line_cursor#29 -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: muls8s::a#0 signed_multiply_results_compare::a#2 +Not aliassing across scopes: muls8s::b#0 signed_multiply_results_compare::b#2 +Not aliassing across scopes: muls8s::return#2 muls8s::return#0 +Not aliassing across scopes: signed_multiply_results_compare::ms#0 muls8s::return#2 +Not aliassing across scopes: mulf8s::a#0 signed_multiply_results_compare::a#2 +Not aliassing across scopes: mulf8s::b#0 signed_multiply_results_compare::b#2 +Not aliassing across scopes: mulf8s::return#2 mulf8s::return#0 +Not aliassing across scopes: signed_multiply_results_compare::ma#0 mulf8s::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 @@ -4319,12 +4321,12 @@ Not aliassing across scopes: char_cursor#119 line_cursor#1 Not aliassing across scopes: line_cursor#22 line_cursor#30 Not aliassing across scopes: char_cursor#121 char_cursor#24 Self Phi Eliminated (byte*) char_cursor#64 -Self Phi Eliminated (byte) slow_multiply::b#1 -Self Phi Eliminated (byte) slow_multiply::a#2 -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) muls8u::b#1 +Self Phi Eliminated (byte) muls8u::a#2 +Self Phi Eliminated (signed byte) muls8s::b#1 +Self Phi Eliminated (signed byte) muls8s::a#3 +Self Phi Eliminated (signed byte) muls8s::b#2 +Self Phi Eliminated (signed byte) muls8s::a#4 Self Phi Eliminated (byte*) BGCOL#10 Self Phi Eliminated (byte*) char_cursor#132 Self Phi Eliminated (byte*) line_cursor#48 @@ -4346,8 +4348,8 @@ 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 (signed byte) mulf8s::a#1 (signed byte) mulf8s::a#0 +Redundant Phi (signed byte) mulf8s::b#1 (signed byte) mulf8s::b#0 Redundant Phi (byte*) BGCOL#1 (byte*) BGCOL#0 Redundant Phi (byte*) line_cursor#46 (byte*) SCREEN#0 Redundant Phi (byte*) char_cursor#130 (byte*) SCREEN#0 @@ -4359,16 +4361,16 @@ Redundant Phi (byte*) char_cursor#23 (byte*) char_cursor#34 Redundant Phi (byte*) line_cursor#29 (byte*) line_cursor#13 Redundant Phi (byte*) char_cursor#24 (byte*) char_cursor#108 Redundant Phi (byte*) line_cursor#30 (byte*) line_cursor#18 -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 (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) muls8u::a#1 (byte) muls8u::a#0 +Redundant Phi (byte) muls8u::b#2 (byte) muls8u::b#0 +Redundant Phi (byte) muls8u::b#1 (byte) muls8u::b#2 +Redundant Phi (byte) muls8u::a#2 (byte) muls8u::a#1 +Redundant Phi (signed byte) muls8s::a#1 (signed byte) muls8s::a#0 +Redundant Phi (signed byte) muls8s::b#3 (signed byte) muls8s::b#0 +Redundant Phi (signed byte) muls8s::b#1 (signed byte) muls8s::b#3 +Redundant Phi (signed byte) muls8s::a#3 (signed byte) muls8s::a#1 +Redundant Phi (signed byte) muls8s::b#2 (signed byte) muls8s::b#3 +Redundant Phi (signed byte) muls8s::a#4 (signed byte) muls8s::a#1 Redundant Phi (byte*) BGCOL#9 (byte*) BGCOL#1 Redundant Phi (byte*) char_cursor#153 (byte*) char_cursor#131 Redundant Phi (byte*) line_cursor#85 (byte*) line_cursor#27 @@ -4453,18 +4455,18 @@ Simple Condition (boolean~) print_ln::$1 if((byte*) line_cursor#1<(byte*) char_c Simple Condition (boolean~) print_sword::$1 if((signed word) print_sword::w#3>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sword::@1 Simple Condition (boolean~) print_sbyte::$1 if((signed byte) print_sbyte::b#3>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sbyte::@1 Simple Condition (boolean~) print_cls::$1 if((byte*) print_cls::sc#1!=(byte*~) print_cls::$0) goto print_cls::@1 -Simple Condition (boolean~) init_multiply::$4 if((byte~) init_multiply::$2!=(byte/signed byte/word/signed word/dword/signed dword) 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/dword/signed dword) 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~) signed_multiply::$4 if((signed byte) signed_multiply::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto signed_multiply::@1 -Simple Condition (boolean~) signed_multiply::$10 if((signed byte) signed_multiply::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto signed_multiply::@2 -Simple Condition (boolean~) slow_multiply::$1 if((byte) slow_multiply::a#0==(byte/signed byte/word/signed word/dword/signed dword) 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/dword/signed dword) 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/dword/signed dword) 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~) mulf_init::$4 if((byte~) mulf_init::$2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@2 +Simple Condition (boolean~) mulf_init::$9 if((byte*) mulf_init::sqr1_lo#1!=(byte*~) mulf_init::$8) goto mulf_init::@1 +Simple Condition (boolean~) mulf_init::$14 if((byte) mulf_init::x_255#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@4 +Simple Condition (boolean~) mulf_init::$16 if((byte*) mulf_init::sqr2_lo#1!=(byte*~) mulf_init::$15) goto mulf_init::@3 +Simple Condition (boolean~) mulf8s::$4 if((signed byte) mulf8s::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s::@1 +Simple Condition (boolean~) mulf8s::$10 if((signed byte) mulf8s::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s::@2 +Simple Condition (boolean~) muls8u::$1 if((byte) muls8u::a#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls8u::@1 +Simple Condition (boolean~) muls8u::$3 if((byte) muls8u::i#1!=(byte) muls8u::a#0) goto muls8u::@2 +Simple Condition (boolean~) muls8s::$1 if((signed byte) muls8s::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls8s::@1 +Simple Condition (boolean~) muls8s::$5 if((signed byte) muls8s::a#0<=(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls8s::@4 +Simple Condition (boolean~) muls8s::$3 if((signed byte) muls8s::i#1!=(signed byte) muls8s::a#0) goto muls8s::@2 +Simple Condition (boolean~) muls8s::$7 if((signed byte) muls8s::j#1!=(signed byte) muls8s::a#0) goto muls8s::@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 @@ -4478,29 +4480,29 @@ Constant (const byte*) SCREEN#0 = ((byte*))1024 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[512]) mul_sqr1_lo#0 = { fill( 512, 0) } -Constant (const byte[512]) mul_sqr1_hi#0 = { fill( 512, 0) } -Constant (const byte[512]) mul_sqr2_lo#0 = { fill( 512, 0) } -Constant (const byte[512]) mul_sqr2_hi#0 = { fill( 512, 0) } -Constant (const word) init_multiply::sqr#0 = 0 -Constant (const byte) init_multiply::x_2#0 = 0 -Constant (const byte) init_multiply::c#0 = 0 -Constant (const signed byte/signed word/signed dword) init_multiply::$10 = -1 -Constant (const byte) init_multiply::dir#0 = 255 -Constant (const byte) init_multiply::dir#1 = 1 -Constant (const byte*) multiply::memA#0 = ((byte*))254 -Constant (const byte*) multiply::memB#0 = ((byte*))255 +Constant (const byte[512]) mulf_sqr1_lo#0 = { fill( 512, 0) } +Constant (const byte[512]) mulf_sqr1_hi#0 = { fill( 512, 0) } +Constant (const byte[512]) mulf_sqr2_lo#0 = { fill( 512, 0) } +Constant (const byte[512]) mulf_sqr2_hi#0 = { fill( 512, 0) } +Constant (const word) mulf_init::sqr#0 = 0 +Constant (const byte) mulf_init::x_2#0 = 0 +Constant (const byte) mulf_init::c#0 = 0 +Constant (const signed byte/signed word/signed dword) mulf_init::$10 = -1 +Constant (const byte) mulf_init::dir#0 = 255 +Constant (const byte) mulf_init::dir#1 = 1 +Constant (const byte*) mulf8u::memA#0 = ((byte*))254 +Constant (const byte*) mulf8u::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) } -Constant (const byte[512]) asm_mul_sqr2_hi#0 = { fill( 512, 0) } -Constant (const byte*) init_multiply_asm::mem#0 = ((byte*))255 +Constant (const word) muls8u::m#0 = 0 +Constant (const byte) muls8u::i#0 = 0 +Constant (const signed word) muls8s::m#0 = 0 +Constant (const signed byte) muls8s::i#0 = 0 +Constant (const signed byte) muls8s::j#0 = 0 +Constant (const byte[512]) mula_sqr1_lo#0 = { fill( 512, 0) } +Constant (const byte[512]) mula_sqr1_hi#0 = { fill( 512, 0) } +Constant (const byte[512]) mula_sqr2_lo#0 = { fill( 512, 0) } +Constant (const byte[512]) mula_sqr2_hi#0 = { fill( 512, 0) } +Constant (const byte*) mulf_init_asm::mem#0 = ((byte*))255 Constant (const word/signed word/dword/signed dword) multiply_tables_compare::$8 = 512*4 Constant (const string) print_str::str#1 = multiply_tables_compare::str Constant (const string) print_str::str#2 = multiply_tables_compare::str1 @@ -4525,30 +4527,30 @@ Succesful SSA optimization Pass2ConstantIdentification Constant (const byte*) print_cls::sc#0 = SCREEN#0 Constant (const byte*) print_cls::$0 = SCREEN#0+1000 Constant (const byte*) line_cursor#26 = SCREEN#0 -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 -Constant (const byte*) init_multiply::$8 = mul_sqr1_lo#0+512 -Constant (const byte) init_multiply::x_255#0 = ((byte))init_multiply::$10 -Constant (const byte[512]) init_multiply::sqr2_hi#0 = mul_sqr2_hi#0 -Constant (const byte[512]) init_multiply::sqr2_lo#0 = mul_sqr2_lo#0 -Constant (const byte*) init_multiply::$15 = mul_sqr2_lo#0+511 -Constant (const byte*) init_multiply::$17 = mul_sqr2_lo#0+511 -Constant (const byte*) init_multiply::$18 = mul_sqr1_lo#0+256 -Constant (const byte*) init_multiply::$19 = mul_sqr2_hi#0+511 -Constant (const byte*) init_multiply::$20 = mul_sqr1_hi#0+256 -Constant (const byte[512]) multiply_tables_compare::asm_sqr#0 = asm_mul_sqr1_lo#0 -Constant (const byte[512]) multiply_tables_compare::kc_sqr#0 = mul_sqr1_lo#0 -Constant (const byte*) multiply_tables_compare::$9 = mul_sqr1_lo#0+multiply_tables_compare::$8 +Constant (const byte*) mulf_init::sqr1_hi#0 = mulf_sqr1_hi#0+1 +Constant (const byte*) mulf_init::sqr1_lo#0 = mulf_sqr1_lo#0+1 +Constant (const byte*) mulf_init::$8 = mulf_sqr1_lo#0+512 +Constant (const byte) mulf_init::x_255#0 = ((byte))mulf_init::$10 +Constant (const byte[512]) mulf_init::sqr2_hi#0 = mulf_sqr2_hi#0 +Constant (const byte[512]) mulf_init::sqr2_lo#0 = mulf_sqr2_lo#0 +Constant (const byte*) mulf_init::$15 = mulf_sqr2_lo#0+511 +Constant (const byte*) mulf_init::$17 = mulf_sqr2_lo#0+511 +Constant (const byte*) mulf_init::$18 = mulf_sqr1_lo#0+256 +Constant (const byte*) mulf_init::$19 = mulf_sqr2_hi#0+511 +Constant (const byte*) mulf_init::$20 = mulf_sqr1_hi#0+256 +Constant (const byte[512]) multiply_tables_compare::asm_sqr#0 = mula_sqr1_lo#0 +Constant (const byte[512]) multiply_tables_compare::kc_sqr#0 = mulf_sqr1_lo#0 +Constant (const byte*) multiply_tables_compare::$9 = mulf_sqr1_lo#0+multiply_tables_compare::$8 Succesful SSA optimization Pass2ConstantIdentification -Fixing word constructor with multiply::$0 ← *(multiply::memB#0) w= *(multiply::memA#0) +Fixing word constructor with mulf8u::$0 ← *(mulf8u::memB#0) w= *(mulf8u::memA#0) Succesful SSA optimization Pass2FixWordConstructors Eliminating Noop Cast (word) print_word::w#0 ← ((word)) (signed word) print_sword::w#4 Eliminating Noop Cast (byte) print_byte::b#0 ← ((byte)) (signed byte) print_sbyte::b#4 -Eliminating Noop Cast (byte) multiply::a#0 ← ((byte)) (signed byte) signed_multiply::a#0 -Eliminating Noop Cast (byte) multiply::b#0 ← ((byte)) (signed byte) signed_multiply::b#0 -Eliminating Noop Cast (byte~) signed_multiply::$7 ← ((byte)) (signed byte) signed_multiply::b#0 -Eliminating Noop Cast (signed word) signed_multiply::return#0 ← ((signed word)) (word) signed_multiply::m#4 -Eliminating Noop Cast (byte~) signed_multiply::$13 ← ((byte)) (signed byte) signed_multiply::a#0 +Eliminating Noop Cast (byte) mulf8u::a#0 ← ((byte)) (signed byte) mulf8s::a#0 +Eliminating Noop Cast (byte) mulf8u::b#0 ← ((byte)) (signed byte) mulf8s::b#0 +Eliminating Noop Cast (byte~) mulf8s::$7 ← ((byte)) (signed byte) mulf8s::b#0 +Eliminating Noop Cast (signed word) mulf8s::return#0 ← ((signed word)) (word) mulf8s::m#4 +Eliminating Noop Cast (byte~) mulf8s::$13 ← ((byte)) (signed byte) mulf8s::a#0 Eliminating Noop Cast (word) print_word::w#1 ← ((word)) (byte*) multiply_tables_compare::asm_sqr#2 Eliminating Noop Cast (word) print_word::w#2 ← ((word)) (byte*) multiply_tables_compare::kc_sqr#2 Succesful SSA optimization Pass2NopCastElimination @@ -4559,14 +4561,14 @@ Culled Empty Block (label) print_word::@2 Culled Empty Block (label) print_byte::@2 Culled Empty Block (label) print_cls::@2 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) mulf_init::@6 +Not culling empty block because it shares successor with its predecessor. (label) mulf_init::@7 Culled Empty Block (label) @11 Culled Empty Block (label) main::@6 -Culled Empty Block (label) slow_multiply::@3 -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) muls8u::@3 +Culled Empty Block (label) muls8s::@6 +Culled Empty Block (label) muls8s::@4 +Culled Empty Block (label) muls8s::@9 Culled Empty Block (label) @14 Culled Empty Block (label) multiply_tables_compare::@9 Culled Empty Block (label) multiply_tables_compare::@11 @@ -4578,7 +4580,7 @@ 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 culling empty block because it shares successor with its predecessor. (label) mulf_init::@7 Not aliassing across scopes: char_cursor#141 char_cursor#161 Not aliassing across scopes: line_cursor#45 line_cursor#87 Not aliassing across scopes: char_cursor#123 char_cursor#17 @@ -4592,22 +4594,20 @@ Not aliassing across scopes: print_byte::b#5 print_byte::b#3 Not aliassing across scopes: char_cursor#129 char_cursor#122 Not aliassing across scopes: print_char::ch#4 print_char::ch#2 Not aliassing across scopes: char_cursor#78 char_cursor#129 -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: mulf8u::return#2 mulf8u::return#0 +Not aliassing across scopes: mulf8s::m#0 mulf8u::return#2 Not aliassing across scopes: char_cursor#30 line_cursor#1 Not aliassing across scopes: line_cursor#10 line_cursor#1 Not aliassing across scopes: char_cursor#161 char_cursor#30 Not aliassing across scopes: line_cursor#87 line_cursor#10 -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#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: muls8u::a#0 multiply_results_compare::a#6 +Not aliassing across scopes: muls8u::b#0 multiply_results_compare::b#2 +Not aliassing across scopes: muls8u::return#2 muls8u::return#0 +Not aliassing across scopes: multiply_results_compare::ms#0 muls8u::return#2 +Not aliassing across scopes: mulf8u::a#1 multiply_results_compare::a#6 +Not aliassing across scopes: mulf8u::b#1 multiply_results_compare::b#2 +Not aliassing across scopes: mulf8u::return#3 mulf8u::return#0 +Not aliassing across scopes: multiply_results_compare::ma#0 mulf8u::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 @@ -4618,13 +4618,13 @@ 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#162 line_cursor#1 Not aliassing across scopes: line_cursor#89 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_results_compare::ma#0 signed_multiply::return#2 +Not aliassing across scopes: muls8s::a#0 signed_multiply_results_compare::a#6 +Not aliassing across scopes: muls8s::b#0 signed_multiply_results_compare::b#2 +Not aliassing across scopes: muls8s::return#2 muls8s::return#0 +Not aliassing across scopes: signed_multiply_results_compare::ms#0 muls8s::return#2 +Not aliassing across scopes: mulf8s::a#0 signed_multiply_results_compare::a#6 +Not aliassing across scopes: mulf8s::b#0 signed_multiply_results_compare::b#2 +Not aliassing across scopes: signed_multiply_results_compare::ma#0 mulf8s::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 @@ -4633,7 +4633,7 @@ 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 +Alias (word) mulf8u::return#0 = (word~) mulf8u::$0 Succesful SSA optimization Pass2AliasElimination Not aliassing across scopes: char_cursor#141 char_cursor#161 Not aliassing across scopes: line_cursor#45 line_cursor#87 @@ -4648,22 +4648,20 @@ Not aliassing across scopes: print_byte::b#5 print_byte::b#3 Not aliassing across scopes: char_cursor#129 char_cursor#122 Not aliassing across scopes: print_char::ch#4 print_char::ch#2 Not aliassing across scopes: char_cursor#78 char_cursor#129 -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: mulf8u::return#2 mulf8u::return#0 +Not aliassing across scopes: mulf8s::m#0 mulf8u::return#2 Not aliassing across scopes: char_cursor#30 line_cursor#1 Not aliassing across scopes: line_cursor#10 line_cursor#1 Not aliassing across scopes: char_cursor#161 char_cursor#30 Not aliassing across scopes: line_cursor#87 line_cursor#10 -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#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: muls8u::a#0 multiply_results_compare::a#6 +Not aliassing across scopes: muls8u::b#0 multiply_results_compare::b#2 +Not aliassing across scopes: muls8u::return#2 muls8u::return#0 +Not aliassing across scopes: multiply_results_compare::ms#0 muls8u::return#2 +Not aliassing across scopes: mulf8u::a#1 multiply_results_compare::a#6 +Not aliassing across scopes: mulf8u::b#1 multiply_results_compare::b#2 +Not aliassing across scopes: mulf8u::return#3 mulf8u::return#0 +Not aliassing across scopes: multiply_results_compare::ma#0 mulf8u::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 @@ -4674,13 +4672,13 @@ 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#162 line_cursor#1 Not aliassing across scopes: line_cursor#89 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_results_compare::ma#0 signed_multiply::return#2 +Not aliassing across scopes: muls8s::a#0 signed_multiply_results_compare::a#6 +Not aliassing across scopes: muls8s::b#0 signed_multiply_results_compare::b#2 +Not aliassing across scopes: muls8s::return#2 muls8s::return#0 +Not aliassing across scopes: signed_multiply_results_compare::ms#0 muls8s::return#2 +Not aliassing across scopes: mulf8s::a#0 signed_multiply_results_compare::a#6 +Not aliassing across scopes: mulf8s::b#0 signed_multiply_results_compare::b#2 +Not aliassing across scopes: signed_multiply_results_compare::ma#0 mulf8s::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 @@ -4703,7 +4701,7 @@ Redundant Phi (byte*) BGCOL#20 (const byte*) BGCOL#0 Redundant Phi (byte*) char_cursor#162 (byte*) line_cursor#1 Redundant Phi (byte*) line_cursor#89 (byte*) line_cursor#1 Succesful SSA optimization Pass2RedundantPhiElimination -Not culling empty block because it shares successor with its predecessor. (label) init_multiply::@7 +Not culling empty block because it shares successor with its predecessor. (label) mulf_init::@7 Not aliassing across scopes: char_cursor#141 char_cursor#30 Not aliassing across scopes: line_cursor#45 line_cursor#10 Not aliassing across scopes: char_cursor#123 char_cursor#17 @@ -4717,20 +4715,18 @@ Not aliassing across scopes: print_byte::b#5 print_byte::b#3 Not aliassing across scopes: char_cursor#129 char_cursor#122 Not aliassing across scopes: print_char::ch#4 print_char::ch#2 Not aliassing across scopes: char_cursor#78 char_cursor#129 -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: mulf8u::return#2 mulf8u::return#0 +Not aliassing across scopes: mulf8s::m#0 mulf8u::return#2 Not aliassing across scopes: char_cursor#30 line_cursor#1 Not aliassing across scopes: line_cursor#10 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#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: muls8u::a#0 multiply_results_compare::a#6 +Not aliassing across scopes: muls8u::b#0 multiply_results_compare::b#2 +Not aliassing across scopes: muls8u::return#2 muls8u::return#0 +Not aliassing across scopes: multiply_results_compare::ms#0 muls8u::return#2 +Not aliassing across scopes: mulf8u::a#1 multiply_results_compare::a#6 +Not aliassing across scopes: mulf8u::b#1 multiply_results_compare::b#2 +Not aliassing across scopes: mulf8u::return#3 mulf8u::return#0 +Not aliassing across scopes: multiply_results_compare::ma#0 mulf8u::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 @@ -4739,13 +4735,13 @@ 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_results_compare::ma#0 signed_multiply::return#2 +Not aliassing across scopes: muls8s::a#0 signed_multiply_results_compare::a#6 +Not aliassing across scopes: muls8s::b#0 signed_multiply_results_compare::b#2 +Not aliassing across scopes: muls8s::return#2 muls8s::return#0 +Not aliassing across scopes: signed_multiply_results_compare::ms#0 muls8s::return#2 +Not aliassing across scopes: mulf8s::a#0 signed_multiply_results_compare::a#6 +Not aliassing across scopes: mulf8s::b#0 signed_multiply_results_compare::b#2 +Not aliassing across scopes: signed_multiply_results_compare::ma#0 mulf8s::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 @@ -4804,43 +4800,43 @@ 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 -Inlining constant with var siblings (const word) init_multiply::sqr#0 -Inlining constant with var siblings (const word) init_multiply::sqr#0 -Inlining constant with var siblings (const word) init_multiply::sqr#0 -Inlining constant with var siblings (const byte) init_multiply::x_2#0 -Inlining constant with var siblings (const byte) init_multiply::x_2#0 -Inlining constant with var siblings (const byte) init_multiply::x_2#0 -Inlining constant with var siblings (const byte) init_multiply::c#0 -Inlining constant with var siblings (const byte) init_multiply::c#0 -Inlining constant with var siblings (const byte) init_multiply::dir#0 -Inlining constant with var siblings (const byte) init_multiply::dir#0 -Inlining constant with different constant siblings (const byte) init_multiply::dir#0 -Inlining constant with var siblings (const byte) init_multiply::dir#1 -Inlining constant with var siblings (const byte) init_multiply::dir#1 -Inlining constant with different constant siblings (const byte) init_multiply::dir#1 -Inlining constant with var siblings (const byte*) init_multiply::sqr1_hi#0 -Inlining constant with var siblings (const byte*) init_multiply::sqr1_hi#0 -Inlining constant with var siblings (const byte*) init_multiply::sqr1_lo#0 -Inlining constant with var siblings (const byte*) init_multiply::sqr1_lo#0 -Inlining constant with var siblings (const byte) init_multiply::x_255#0 -Inlining constant with var siblings (const byte) init_multiply::x_255#0 -Inlining constant with var siblings (const byte[512]) init_multiply::sqr2_hi#0 -Inlining constant with var siblings (const byte[512]) init_multiply::sqr2_hi#0 -Inlining constant with var siblings (const byte[512]) init_multiply::sqr2_lo#0 -Inlining constant with var siblings (const byte[512]) init_multiply::sqr2_lo#0 -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 word) mulf_init::sqr#0 +Inlining constant with var siblings (const word) mulf_init::sqr#0 +Inlining constant with var siblings (const word) mulf_init::sqr#0 +Inlining constant with var siblings (const word) mulf_init::sqr#0 +Inlining constant with var siblings (const byte) mulf_init::x_2#0 +Inlining constant with var siblings (const byte) mulf_init::x_2#0 +Inlining constant with var siblings (const byte) mulf_init::x_2#0 +Inlining constant with var siblings (const byte) mulf_init::c#0 +Inlining constant with var siblings (const byte) mulf_init::c#0 +Inlining constant with var siblings (const byte) mulf_init::dir#0 +Inlining constant with var siblings (const byte) mulf_init::dir#0 +Inlining constant with different constant siblings (const byte) mulf_init::dir#0 +Inlining constant with var siblings (const byte) mulf_init::dir#1 +Inlining constant with var siblings (const byte) mulf_init::dir#1 +Inlining constant with different constant siblings (const byte) mulf_init::dir#1 +Inlining constant with var siblings (const byte*) mulf_init::sqr1_hi#0 +Inlining constant with var siblings (const byte*) mulf_init::sqr1_hi#0 +Inlining constant with var siblings (const byte*) mulf_init::sqr1_lo#0 +Inlining constant with var siblings (const byte*) mulf_init::sqr1_lo#0 +Inlining constant with var siblings (const byte) mulf_init::x_255#0 +Inlining constant with var siblings (const byte) mulf_init::x_255#0 +Inlining constant with var siblings (const byte[512]) mulf_init::sqr2_hi#0 +Inlining constant with var siblings (const byte[512]) mulf_init::sqr2_hi#0 +Inlining constant with var siblings (const byte[512]) mulf_init::sqr2_lo#0 +Inlining constant with var siblings (const byte[512]) mulf_init::sqr2_lo#0 +Inlining constant with var siblings (const word) muls8u::m#0 +Inlining constant with var siblings (const word) muls8u::m#0 +Inlining constant with var siblings (const byte) muls8u::i#0 +Inlining constant with var siblings (const byte) muls8u::i#0 +Inlining constant with var siblings (const signed word) muls8s::m#0 +Inlining constant with var siblings (const signed word) muls8s::m#0 +Inlining constant with var siblings (const signed word) muls8s::m#0 +Inlining constant with var siblings (const signed word) muls8s::m#0 +Inlining constant with var siblings (const signed byte) muls8s::i#0 +Inlining constant with var siblings (const signed byte) muls8s::i#0 +Inlining constant with var siblings (const signed byte) muls8s::j#0 +Inlining constant with var siblings (const signed byte) muls8s::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 @@ -4857,81 +4853,81 @@ Inlining constant with var siblings (const byte*) line_cursor#26 Inlining constant with var siblings (const byte*) line_cursor#26 Inlining constant with var siblings (const byte*) line_cursor#26 Inlining constant with var siblings (const byte*) line_cursor#26 -Constant inlined slow_multiply::m#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 -Constant inlined init_multiply::dir#0 = (byte/word/signed word/dword/signed dword) 255 -Constant inlined init_multiply::$8 = (const byte[512]) mul_sqr1_lo#0+(word/signed word/dword/signed dword) 512 -Constant inlined slow_signed_multiply::m#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 -Constant inlined slow_multiply::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 -Constant inlined init_multiply::x_255#0 = ((byte))-(byte/signed byte/word/signed word/dword/signed dword) 1 -Constant inlined init_multiply::dir#1 = (byte/signed byte/word/signed word/dword/signed dword) 1 -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/dword/signed dword) 256 +Constant inlined mulf_init::sqr2_lo#0 = (const byte[512]) mulf_sqr2_lo#0 +Constant inlined mulf_init::sqr2_hi#0 = (const byte[512]) mulf_sqr2_hi#0 +Constant inlined mulf_init::dir#1 = (byte/signed byte/word/signed word/dword/signed dword) 1 +Constant inlined mulf_init::dir#0 = (byte/word/signed word/dword/signed dword) 255 +Constant inlined multiply_tables_compare::asm_sqr#0 = (const byte[512]) mula_sqr1_lo#0 Constant inlined line_cursor#26 = (const byte*) SCREEN#0 -Constant inlined slow_signed_multiply::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 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 mulf_init::$20 = (const byte[512]) mulf_sqr1_hi#0+(word/signed word/dword/signed dword) 256 +Constant inlined mulf_init::x_255#0 = ((byte))-(byte/signed byte/word/signed word/dword/signed dword) 1 +Constant inlined multiply_tables_compare::kc_sqr#0 = (const byte[512]) mulf_sqr1_lo#0 +Constant inlined mulf_init::x_2#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined signed_multiply_results_compare::$7 = -(byte/word/signed word/dword/signed dword) 128 -Constant inlined init_multiply::c#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined signed_multiply_results_compare::a#0 = -(byte/word/signed word/dword/signed dword) 128 Constant inlined signed_multiply_results_compare::$9 = -(byte/word/signed word/dword/signed dword) 128 -Constant inlined init_multiply::sqr1_lo#0 = (const byte[512]) mul_sqr1_lo#0+(byte/signed byte/word/signed word/dword/signed dword) 1 -Constant inlined init_multiply::sqr1_hi#0 = (const byte[512]) mul_sqr1_hi#0+(byte/signed byte/word/signed word/dword/signed dword) 1 +Constant inlined muls8s::m#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 +Constant inlined muls8s::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined print_str::str#9 = (const string) signed_multiply_results_compare::str +Constant inlined mulf_init::sqr1_hi#0 = (const byte[512]) mulf_sqr1_hi#0+(byte/signed byte/word/signed word/dword/signed dword) 1 +Constant inlined mulf_init::$10 = -(byte/signed byte/word/signed word/dword/signed dword) 1 Constant inlined multiply_results_compare::a#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 +Constant inlined mulf_init::sqr1_lo#0 = (const byte[512]) mulf_sqr1_lo#0+(byte/signed byte/word/signed word/dword/signed dword) 1 Constant inlined print_str::str#4 = (const string) multiply_results_compare::str +Constant inlined mulf_init::$15 = (const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511 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 print_str::str#1 = (const string) multiply_tables_compare::str +Constant inlined mulf_init::$18 = (const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 256 Constant inlined print_str::str#8 = (const string) multiply_error::str3 +Constant inlined mulf_init::$19 = (const byte[512]) mulf_sqr2_hi#0+(word/signed word/dword/signed dword) 511 Constant inlined print_str::str#7 = (const string) multiply_error::str2 Constant inlined print_str::str#6 = (const string) multiply_error::str1 +Constant inlined mulf_init::$17 = (const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511 Constant inlined print_str::str#5 = (const string) multiply_error::str +Constant inlined mulf_init::c#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined print_cls::$0 = (const byte*) SCREEN#0+(word/signed word/dword/signed dword) 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/dword/signed dword) 0 -Constant inlined multiply_tables_compare::$9 = (const byte[512]) mul_sqr1_lo#0+(word/signed word/dword/signed dword) 512*(byte/signed byte/word/signed word/dword/signed dword) 4 -Constant inlined slow_signed_multiply::j#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 +Constant inlined multiply_tables_compare::$9 = (const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512*(byte/signed byte/word/signed word/dword/signed dword) 4 Constant inlined multiply_tables_compare::$8 = (word/signed word/dword/signed dword) 512*(byte/signed byte/word/signed word/dword/signed dword) 4 -Constant inlined init_multiply::$18 = (const byte[512]) mul_sqr1_lo#0+(word/signed word/dword/signed dword) 256 -Constant inlined init_multiply::$19 = (const byte[512]) mul_sqr2_hi#0+(word/signed word/dword/signed dword) 511 +Constant inlined mulf_init::sqr#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 +Constant inlined muls8u::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 +Constant inlined muls8u::m#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined signed_multiply_results_compare::b#0 = -(byte/word/signed word/dword/signed dword) 128 -Constant inlined init_multiply::$10 = -(byte/signed byte/word/signed word/dword/signed dword) 1 Constant inlined print_cls::sc#0 = (const byte*) SCREEN#0 -Constant inlined init_multiply::$17 = (const byte[512]) mul_sqr2_lo#0+(word/signed word/dword/signed dword) 511 -Constant inlined init_multiply::$15 = (const byte[512]) mul_sqr2_lo#0+(word/signed word/dword/signed dword) 511 +Constant inlined mulf_init::$8 = (const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512 +Constant inlined muls8s::j#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 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/dword/signed dword) 0 Constant inlined print_byte::$4 = (const string) print_byte::hextab#0 -Constant inlined init_multiply::x_2#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Succesful SSA optimization Pass2ConstantInlining -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 +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 mulf8s mulf8s::@6 mulf8s::@3 mulf8s::@1 mulf8s::@4 mulf8s::@2 mulf8s::@return mulf8u mulf8u::@return muls8s muls8s::@2 muls8s::@3 muls8s::@return muls8s::@1 muls8s::@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 muls8u muls8u::@2 muls8u::@1 muls8u::@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 mulf_init_asm mulf_init_asm::@return mulf_init mulf_init::@1 mulf_init::@5 mulf_init::@2 mulf_init::@3 mulf_init::@7 mulf_init::@4 mulf_init::@8 mulf_init::@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 mulf8s::@7(between mulf8s::@6 and mulf8s::@1) +Added new block during phi lifting mulf8s::@8(between mulf8s::@1 and mulf8s::@2) +Added new block during phi lifting muls8s::@12(between muls8s::@2 and muls8s::@2) +Added new block during phi lifting muls8s::@13(between muls8s::@2 and muls8s::@3) +Added new block during phi lifting muls8s::@14(between muls8s::@5 and muls8s::@3) +Added new block during phi lifting muls8s::@15(between muls8s::@5 and muls8s::@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 muls8u::@6(between muls8u::@2 and muls8u::@2) +Added new block during phi lifting muls8u::@7(between muls8u::@2 and muls8u::@1) Added new block during phi lifting multiply_tables_compare::@12(between multiply_tables_compare::@2 and multiply_tables_compare::@1) -Added new block during phi lifting init_multiply::@9(between init_multiply::@2 and init_multiply::@1) -Added new block during phi lifting init_multiply::@10(between init_multiply::@1 and init_multiply::@2) -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 mulf_init::@9(between mulf_init::@2 and mulf_init::@1) +Added new block during phi lifting mulf_init::@10(between mulf_init::@1 and mulf_init::@2) +Added new block during phi lifting mulf_init::@11(between mulf_init::@4 and mulf_init::@3) +Added new block during phi lifting mulf_init::@12(between mulf_init::@3 and mulf_init::@4) Added new block during phi lifting print_cls::@3(between print_cls::@1 and print_cls::@1) -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 +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 mulf8s mulf8s::@6 mulf8s::@3 mulf8s::@1 mulf8s::@4 mulf8s::@2 mulf8s::@return mulf8s::@8 mulf8s::@7 mulf8u mulf8u::@return muls8s muls8s::@2 muls8s::@13 muls8s::@3 muls8s::@return muls8s::@12 muls8s::@1 muls8s::@5 muls8s::@14 muls8s::@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 muls8u muls8u::@2 muls8u::@7 muls8u::@1 muls8u::@return muls8u::@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 mulf_init_asm mulf_init_asm::@return mulf_init mulf_init::@1 mulf_init::@5 mulf_init::@2 mulf_init::@3 mulf_init::@7 mulf_init::@4 mulf_init::@8 mulf_init::@return mulf_init::@11 mulf_init::@12 mulf_init::@9 mulf_init::@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 @20 Adding NOP phi() at start of @end @@ -4944,20 +4940,20 @@ 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 init_multiply -Adding NOP phi() at start of init_multiply::@7 +Adding NOP phi() at start of mulf_init +Adding NOP phi() at start of mulf_init::@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 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 [main] to print_cls:5 mulf_init:7 mulf_init_asm:9 multiply_tables_compare:11 multiply_results_compare:13 signed_multiply_results_compare:15 +Calls in [signed_multiply_results_compare] to muls8s:22 mulf8s: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:101 Calls in [print_word] to print_byte:109 print_byte:113 Calls in [print_byte] to print_char:120 print_char:125 Calls in [print_sbyte] to print_char:134 print_byte:141 -Calls in [signed_multiply] to multiply:147 -Calls in [multiply_results_compare] to slow_multiply:194 multiply:201 multiply_error:210 print_str:217 print_ln:220 +Calls in [mulf8s] to mulf8u:147 +Calls in [multiply_results_compare] to muls8u:194 mulf8u:201 multiply_error:210 print_str:217 print_ln:220 Calls in [multiply_error] to print_str:224 print_byte:228 print_str:230 print_byte:234 print_str:236 print_word:240 print_str:242 print_word:246 print_ln:249 Calls in [multiply_tables_compare] to print_str:265 print_word:268 print_str:270 print_word:273 print_str:281 print_ln:283 @@ -5033,18 +5029,18 @@ Coalesced [137] char_cursor#200 ← char_cursor#17 Coalesced (already) [140] char_cursor#192 ← char_cursor#126 Coalesced [143] print_sbyte::b#9 ← print_sbyte::b#3 Coalesced (already) [144] char_cursor#199 ← char_cursor#122 -Coalesced [154] signed_multiply::m#7 ← signed_multiply::m#1 -Coalesced [160] signed_multiply::m#10 ← signed_multiply::m#2 -Coalesced [163] signed_multiply::m#9 ← signed_multiply::m#5 -Coalesced [164] signed_multiply::m#8 ← signed_multiply::m#0 -Coalesced [176] slow_signed_multiply::return#5 ← slow_signed_multiply::m#1 -Coalesced [179] slow_signed_multiply::m#10 ← slow_signed_multiply::m#1 -Coalesced [180] slow_signed_multiply::i#3 ← slow_signed_multiply::i#1 -Coalesced [186] slow_signed_multiply::return#6 ← slow_signed_multiply::m#2 -Coalesced [187] slow_signed_multiply::m#11 ← slow_signed_multiply::m#2 -Coalesced [188] slow_signed_multiply::j#3 ← slow_signed_multiply::j#1 -Coalesced [199] multiply::a#3 ← multiply::a#1 -Coalesced [200] multiply::b#3 ← multiply::b#1 +Coalesced [154] mulf8s::m#7 ← mulf8s::m#1 +Coalesced [160] mulf8s::m#10 ← mulf8s::m#2 +Coalesced [163] mulf8s::m#9 ← mulf8s::m#5 +Coalesced [164] mulf8s::m#8 ← mulf8s::m#0 +Coalesced [176] muls8s::return#5 ← muls8s::m#1 +Coalesced [179] muls8s::m#10 ← muls8s::m#1 +Coalesced [180] muls8s::i#3 ← muls8s::i#1 +Coalesced [186] muls8s::return#6 ← muls8s::m#2 +Coalesced [187] muls8s::m#11 ← muls8s::m#2 +Coalesced [188] muls8s::j#3 ← muls8s::j#1 +Coalesced [199] mulf8u::a#4 ← mulf8u::a#1 +Coalesced [200] mulf8u::b#4 ← mulf8u::b#1 Coalesced [216] char_cursor#174 ← char_cursor#30 Coalesced [218] line_cursor#102 ← line_cursor#10 Coalesced (already) [219] char_cursor#166 ← char_cursor#122 @@ -5064,9 +5060,9 @@ Coalesced [244] print_word::w#8 ← print_word::w#4 Coalesced (already) [245] char_cursor#186 ← char_cursor#122 Coalesced (already) [247] line_cursor#101 ← line_cursor#10 Coalesced (already) [248] char_cursor#165 ← char_cursor#17 -Coalesced [256] slow_multiply::return#5 ← slow_multiply::m#1 -Coalesced [259] slow_multiply::m#5 ← slow_multiply::m#1 -Coalesced [260] slow_multiply::i#3 ← slow_multiply::i#1 +Coalesced [256] muls8u::return#5 ← muls8u::m#1 +Coalesced [259] muls8u::m#5 ← muls8u::m#1 +Coalesced [260] muls8u::i#3 ← muls8u::i#1 Coalesced (already) [267] char_cursor#187 ← char_cursor#122 Coalesced (already) [269] char_cursor#175 ← char_cursor#17 Coalesced (already) [272] char_cursor#188 ← char_cursor#122 @@ -5076,20 +5072,20 @@ Not coalescing [284] char_cursor#201 ← line_cursor#1 Coalesced (already) [285] line_cursor#107 ← line_cursor#1 Coalesced [286] multiply_tables_compare::kc_sqr#8 ← multiply_tables_compare::kc_sqr#1 Coalesced [287] multiply_tables_compare::asm_sqr#6 ← multiply_tables_compare::asm_sqr#1 -Coalesced [301] init_multiply::sqr#8 ← init_multiply::sqr#2 -Coalesced [302] init_multiply::x_2#7 ← init_multiply::x_2#1 -Coalesced [325] init_multiply::x_255#5 ← init_multiply::x_255#1 -Coalesced [326] init_multiply::sqr2_lo#5 ← init_multiply::sqr2_lo#1 -Coalesced [327] init_multiply::sqr2_hi#5 ← init_multiply::sqr2_hi#1 -Coalesced [328] init_multiply::dir#4 ← init_multiply::dir#3 -Coalesced (already) [329] init_multiply::dir#5 ← init_multiply::dir#2 -Coalesced [330] init_multiply::c#5 ← init_multiply::c#1 -Coalesced [331] init_multiply::sqr#6 ← init_multiply::sqr#1 -Coalesced [332] init_multiply::sqr1_lo#5 ← init_multiply::sqr1_lo#1 -Coalesced [333] init_multiply::sqr1_hi#5 ← init_multiply::sqr1_hi#1 -Coalesced [334] init_multiply::x_2#5 ← init_multiply::x_2#2 -Coalesced [335] init_multiply::sqr#7 ← init_multiply::sqr#4 -Coalesced (already) [336] init_multiply::x_2#6 ← init_multiply::x_2#3 +Coalesced [301] mulf_init::sqr#8 ← mulf_init::sqr#2 +Coalesced [302] mulf_init::x_2#7 ← mulf_init::x_2#1 +Coalesced [325] mulf_init::x_255#5 ← mulf_init::x_255#1 +Coalesced [326] mulf_init::sqr2_lo#5 ← mulf_init::sqr2_lo#1 +Coalesced [327] mulf_init::sqr2_hi#5 ← mulf_init::sqr2_hi#1 +Coalesced [328] mulf_init::dir#4 ← mulf_init::dir#3 +Coalesced (already) [329] mulf_init::dir#5 ← mulf_init::dir#2 +Coalesced [330] mulf_init::c#5 ← mulf_init::c#1 +Coalesced [331] mulf_init::sqr#6 ← mulf_init::sqr#1 +Coalesced [332] mulf_init::sqr1_lo#5 ← mulf_init::sqr1_lo#1 +Coalesced [333] mulf_init::sqr1_hi#5 ← mulf_init::sqr1_hi#1 +Coalesced [334] mulf_init::x_2#5 ← mulf_init::x_2#2 +Coalesced [335] mulf_init::sqr#7 ← mulf_init::sqr#4 +Coalesced (already) [336] mulf_init::x_2#6 ← mulf_init::x_2#3 Coalesced [343] print_cls::sc#3 ← print_cls::sc#1 Coalesced down to 32 phi equivalence classes Culled Empty Block (label) signed_multiply_results_compare::@13 @@ -5097,24 +5093,24 @@ 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) mulf8s::@8 +Culled Empty Block (label) mulf8s::@7 +Culled Empty Block (label) muls8s::@13 +Culled Empty Block (label) muls8s::@12 +Culled Empty Block (label) muls8s::@14 +Culled Empty Block (label) muls8s::@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) muls8u::@7 +Culled Empty Block (label) muls8u::@6 Culled Empty Block (label) multiply_tables_compare::@12 -Culled Empty Block (label) init_multiply::@7 -Culled Empty Block (label) init_multiply::@11 -Not culling empty block because it shares successor with its predecessor. (label) init_multiply::@12 -Culled Empty Block (label) init_multiply::@9 -Culled Empty Block (label) init_multiply::@10 +Culled Empty Block (label) mulf_init::@7 +Culled Empty Block (label) mulf_init::@11 +Not culling empty block because it shares successor with its predecessor. (label) mulf_init::@12 +Culled Empty Block (label) mulf_init::@9 +Culled Empty Block (label) mulf_init::@10 Culled Empty Block (label) 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 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 +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 mulf8s mulf8s::@6 mulf8s::@3 mulf8s::@1 mulf8s::@4 mulf8s::@2 mulf8s::@return mulf8u mulf8u::@return muls8s muls8s::@2 muls8s::@3 muls8s::@return muls8s::@1 muls8s::@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 muls8u muls8u::@2 muls8u::@1 muls8u::@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 mulf_init_asm mulf_init_asm::@return mulf_init mulf_init::@1 mulf_init::@5 mulf_init::@2 mulf_init::@3 mulf_init::@4 mulf_init::@8 mulf_init::@return mulf_init::@12 print_cls print_cls::@1 print_cls::@return Adding NOP phi() at start of @begin Adding NOP phi() at start of @20 Adding NOP phi() at start of @end @@ -5143,8 +5139,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 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::@12 +Adding NOP phi() at start of mulf_init +Adding NOP phi() at start of mulf_init::@12 Adding NOP phi() at start of print_cls Propagating live ranges... Propagating live ranges... @@ -5187,11 +5183,11 @@ main: scope:[main] from @20 to:main::@1 main::@1: scope:[main] from main [6] phi() [ ] ( main:2 [ ] ) - [7] call init_multiply param-assignment [ ] ( main:2 [ ] ) + [7] call mulf_init param-assignment [ ] ( main:2 [ ] ) to:main::@2 main::@2: scope:[main] from main::@1 [8] phi() [ ] ( main:2 [ ] ) - [9] call init_multiply_asm param-assignment [ ] ( main:2 [ ] ) + [9] call mulf_init_asm param-assignment [ ] ( main:2 [ ] ) to:main::@3 main::@3: scope:[main] from main::@2 [10] phi() [ ] ( main:2 [ ] ) @@ -5216,20 +5212,20 @@ signed_multiply_results_compare::@1: scope:[signed_multiply_results_compare] fr 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/dword/signed dword) 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 ] ) + [20] (signed byte) muls8s::a#0 ← (signed byte) signed_multiply_results_compare::a#6 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 muls8s::a#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 muls8s::a#0 line_cursor#1 ] ) + [21] (signed byte) muls8s::b#0 ← (signed byte) signed_multiply_results_compare::b#2 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 muls8s::a#0 muls8s::b#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 muls8s::a#0 muls8s::b#0 line_cursor#1 ] ) + [22] call muls8s param-assignment [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 muls8s::return#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 muls8s::return#0 line_cursor#1 ] ) + [23] (signed word) muls8s::return#2 ← (signed word) muls8s::return#0 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 muls8s::return#2 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 muls8s::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::m#4 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::m#4 line_cursor#1 ] ) - [28] (signed word) signed_multiply::return#2 ← (signed word)(word) signed_multiply::m#4 [ 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 ] ) + [24] (signed word) signed_multiply_results_compare::ms#0 ← (signed word) muls8s::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) mulf8s::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 mulf8s::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 mulf8s::a#0 line_cursor#1 ] ) + [26] (signed byte) mulf8s::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 mulf8s::a#0 mulf8s::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 mulf8s::a#0 mulf8s::b#0 line_cursor#1 ] ) + [27] call mulf8s param-assignment [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 mulf8s::m#4 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 mulf8s::m#4 line_cursor#1 ] ) + [28] (signed word) mulf8s::return#2 ← (signed word)(word) mulf8s::m#4 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 mulf8s::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 mulf8s::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 ] ) + [29] (signed word) signed_multiply_results_compare::ma#0 ← (signed word) mulf8s::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 @@ -5404,73 +5400,73 @@ print_sbyte::@1: scope:[print_sbyte] from print_sbyte print_sbyte::@4 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#4 ← (byte)(signed byte) signed_multiply::a#0 [ signed_multiply::a#0 signed_multiply::b#0 multiply::a#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::a#0 signed_multiply::b#0 multiply::a#4 ] ) - [114] (byte~) multiply::b#4 ← (byte)(signed byte) signed_multiply::b#0 [ signed_multiply::a#0 signed_multiply::b#0 multiply::a#4 multiply::b#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::a#0 signed_multiply::b#0 multiply::a#4 multiply::b#4 ] ) - [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/dword/signed dword) 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 byte/word/signed word/dword/signed dword~) signed_multiply::$16 ← (byte~) signed_multiply::$6 - (byte)(signed byte) signed_multiply::b#0 [ 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 ] ) - [121] (word) signed_multiply::m#1 ← (word) signed_multiply::m#0 hi= (byte/signed byte/word/signed word/dword/signed dword~) 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 - [122] (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 ] ) - [123] if((signed byte) signed_multiply::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 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 - [124] (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 ] ) - [125] (byte/signed byte/word/signed word/dword/signed dword~) signed_multiply::$17 ← (byte~) signed_multiply::$12 - (byte)(signed byte) signed_multiply::a#0 [ 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 ] ) - [126] (word) signed_multiply::m#2 ← (word) signed_multiply::m#5 hi= (byte/signed byte/word/signed word/dword/signed dword~) 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 - [127] (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 ] ) - to:signed_multiply::@return -signed_multiply::@return: scope:[signed_multiply] from signed_multiply::@2 - [128] return [ 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 ] ) +mulf8s: scope:[mulf8s] from signed_multiply_results_compare::@8 + [113] (byte~) mulf8u::a#3 ← (byte)(signed byte) mulf8s::a#0 [ mulf8s::a#0 mulf8s::b#0 mulf8u::a#3 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::a#0 mulf8s::b#0 mulf8u::a#3 ] ) + [114] (byte~) mulf8u::b#3 ← (byte)(signed byte) mulf8s::b#0 [ mulf8s::a#0 mulf8s::b#0 mulf8u::a#3 mulf8u::b#3 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::a#0 mulf8s::b#0 mulf8u::a#3 mulf8u::b#3 ] ) + [115] call mulf8u param-assignment [ mulf8s::a#0 mulf8s::b#0 mulf8u::return#0 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::a#0 mulf8s::b#0 mulf8u::return#0 ] ) + [116] (word) mulf8u::return#2 ← (word) mulf8u::return#0 [ mulf8s::a#0 mulf8s::b#0 mulf8u::return#2 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::a#0 mulf8s::b#0 mulf8u::return#2 ] ) + to:mulf8s::@6 +mulf8s::@6: scope:[mulf8s] from mulf8s + [117] (word) mulf8s::m#0 ← (word) mulf8u::return#2 [ mulf8s::a#0 mulf8s::b#0 mulf8s::m#0 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::a#0 mulf8s::b#0 mulf8s::m#0 ] ) + [118] if((signed byte) mulf8s::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s::@1 [ mulf8s::a#0 mulf8s::b#0 mulf8s::m#0 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::a#0 mulf8s::b#0 mulf8s::m#0 ] ) + to:mulf8s::@3 +mulf8s::@3: scope:[mulf8s] from mulf8s::@6 + [119] (byte~) mulf8s::$6 ← > (word) mulf8s::m#0 [ mulf8s::a#0 mulf8s::b#0 mulf8s::m#0 mulf8s::$6 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::a#0 mulf8s::b#0 mulf8s::m#0 mulf8s::$6 ] ) + [120] (byte/signed byte/word/signed word/dword/signed dword~) mulf8s::$16 ← (byte~) mulf8s::$6 - (byte)(signed byte) mulf8s::b#0 [ mulf8s::a#0 mulf8s::b#0 mulf8s::m#0 mulf8s::$16 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::a#0 mulf8s::b#0 mulf8s::m#0 mulf8s::$16 ] ) + [121] (word) mulf8s::m#1 ← (word) mulf8s::m#0 hi= (byte/signed byte/word/signed word/dword/signed dword~) mulf8s::$16 [ mulf8s::a#0 mulf8s::b#0 mulf8s::m#1 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::a#0 mulf8s::b#0 mulf8s::m#1 ] ) + to:mulf8s::@1 +mulf8s::@1: scope:[mulf8s] from mulf8s::@3 mulf8s::@6 + [122] (word) mulf8s::m#5 ← phi( mulf8s::@3/(word) mulf8s::m#1 mulf8s::@6/(word) mulf8s::m#0 ) [ mulf8s::a#0 mulf8s::b#0 mulf8s::m#5 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::a#0 mulf8s::b#0 mulf8s::m#5 ] ) + [123] if((signed byte) mulf8s::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s::@2 [ mulf8s::a#0 mulf8s::m#5 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::a#0 mulf8s::m#5 ] ) + to:mulf8s::@4 +mulf8s::@4: scope:[mulf8s] from mulf8s::@1 + [124] (byte~) mulf8s::$12 ← > (word) mulf8s::m#5 [ mulf8s::a#0 mulf8s::m#5 mulf8s::$12 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::a#0 mulf8s::m#5 mulf8s::$12 ] ) + [125] (byte/signed byte/word/signed word/dword/signed dword~) mulf8s::$17 ← (byte~) mulf8s::$12 - (byte)(signed byte) mulf8s::a#0 [ mulf8s::m#5 mulf8s::$17 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::m#5 mulf8s::$17 ] ) + [126] (word) mulf8s::m#2 ← (word) mulf8s::m#5 hi= (byte/signed byte/word/signed word/dword/signed dword~) mulf8s::$17 [ mulf8s::m#2 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::m#2 ] ) + to:mulf8s::@2 +mulf8s::@2: scope:[mulf8s] from mulf8s::@1 mulf8s::@4 + [127] (word) mulf8s::m#4 ← phi( mulf8s::@1/(word) mulf8s::m#5 mulf8s::@4/(word) mulf8s::m#2 ) [ mulf8s::m#4 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::m#4 ] ) + to:mulf8s::@return +mulf8s::@return: scope:[mulf8s] from mulf8s::@2 + [128] return [ mulf8s::m#4 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::m#4 ] ) to:@return -multiply: scope:[multiply] from multiply_results_compare::@8 signed_multiply - [129] (byte) multiply::b#2 ← phi( multiply_results_compare::@8/(byte) multiply::b#1 signed_multiply/(byte~) multiply::b#4 ) [ 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:157 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply::a#2 multiply::b#2 ] ) - [129] (byte) multiply::a#2 ← phi( multiply_results_compare::@8/(byte) multiply::a#1 signed_multiply/(byte~) multiply::a#4 ) [ 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:157 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply::a#2 multiply::b#2 ] ) - [130] *((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:157 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply::b#2 ] ) - [131] *((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:157 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ) - asm { ldamemA stasm1+1 stasm3+1 eor#$ff stasm2+1 stasm4+1 ldxmemB sec sm1: ldamul_sqr1_lo,x sm2: sbcmul_sqr2_lo,x stamemA sm3: ldamul_sqr1_hi,x sm4: sbcmul_sqr2_hi,x stamemB } - [133] (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:157 [ line_cursor#10 char_cursor#30 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 - [134] 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:157 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply::return#0 ] ) +mulf8u: scope:[mulf8u] from mulf8s multiply_results_compare::@8 + [129] (byte) mulf8u::b#2 ← phi( mulf8s/(byte~) mulf8u::b#3 multiply_results_compare::@8/(byte) mulf8u::b#1 ) [ mulf8u::a#2 mulf8u::b#2 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27::mulf8u:115 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::a#0 mulf8s::b#0 mulf8u::a#2 mulf8u::b#2 ] main:2::multiply_results_compare:13::mulf8u:157 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 mulf8u::a#2 mulf8u::b#2 ] ) + [129] (byte) mulf8u::a#2 ← phi( mulf8s/(byte~) mulf8u::a#3 multiply_results_compare::@8/(byte) mulf8u::a#1 ) [ mulf8u::a#2 mulf8u::b#2 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27::mulf8u:115 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::a#0 mulf8s::b#0 mulf8u::a#2 mulf8u::b#2 ] main:2::multiply_results_compare:13::mulf8u:157 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 mulf8u::a#2 mulf8u::b#2 ] ) + [130] *((const byte*) mulf8u::memA#0) ← (byte) mulf8u::a#2 [ mulf8u::b#2 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27::mulf8u:115 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::a#0 mulf8s::b#0 mulf8u::b#2 ] main:2::multiply_results_compare:13::mulf8u:157 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 mulf8u::b#2 ] ) + [131] *((const byte*) mulf8u::memB#0) ← (byte) mulf8u::b#2 [ ] ( main:2::signed_multiply_results_compare:15::mulf8s:27::mulf8u:115 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::a#0 mulf8s::b#0 ] main:2::multiply_results_compare:13::mulf8u:157 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ) + asm { ldamemA stasm1+1 stasm3+1 eor#$ff stasm2+1 stasm4+1 ldxmemB sec sm1: ldamulf_sqr1_lo,x sm2: sbcmulf_sqr2_lo,x stamemA sm3: ldamulf_sqr1_hi,x sm4: sbcmulf_sqr2_hi,x stamemB } + [133] (word) mulf8u::return#0 ← *((const byte*) mulf8u::memB#0) w= *((const byte*) mulf8u::memA#0) [ mulf8u::return#0 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27::mulf8u:115 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::a#0 mulf8s::b#0 mulf8u::return#0 ] main:2::multiply_results_compare:13::mulf8u:157 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 mulf8u::return#0 ] ) + to:mulf8u::@return +mulf8u::@return: scope:[mulf8u] from mulf8u + [134] return [ mulf8u::return#0 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27::mulf8u:115 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::a#0 mulf8s::b#0 mulf8u::return#0 ] main:2::multiply_results_compare:13::mulf8u:157 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 mulf8u::return#0 ] ) to:@return -slow_signed_multiply: scope:[slow_signed_multiply] from signed_multiply_results_compare::@2 - [135] if((signed byte) slow_signed_multiply::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 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 - [136] (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/dword/signed dword) 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 ] ) - [136] (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/dword/signed dword) 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 ] ) - [137] (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 ] ) - [138] (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 ] ) - [139] 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 - [140] (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/dword/signed dword) 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 - [141] 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 ] ) +muls8s: scope:[muls8s] from signed_multiply_results_compare::@2 + [135] if((signed byte) muls8s::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls8s::@1 [ muls8s::a#0 muls8s::b#0 ] ( main:2::signed_multiply_results_compare:15::muls8s:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 muls8s::a#0 muls8s::b#0 ] ) + to:muls8s::@2 +muls8s::@2: scope:[muls8s] from muls8s muls8s::@2 + [136] (signed byte) muls8s::i#2 ← phi( muls8s::@2/(signed byte) muls8s::i#1 muls8s/(byte/signed byte/word/signed word/dword/signed dword) 0 ) [ muls8s::a#0 muls8s::b#0 muls8s::m#3 muls8s::i#2 ] ( main:2::signed_multiply_results_compare:15::muls8s:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 muls8s::a#0 muls8s::b#0 muls8s::m#3 muls8s::i#2 ] ) + [136] (signed word) muls8s::m#3 ← phi( muls8s::@2/(signed word) muls8s::m#1 muls8s/(byte/signed byte/word/signed word/dword/signed dword) 0 ) [ muls8s::a#0 muls8s::b#0 muls8s::m#3 muls8s::i#2 ] ( main:2::signed_multiply_results_compare:15::muls8s:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 muls8s::a#0 muls8s::b#0 muls8s::m#3 muls8s::i#2 ] ) + [137] (signed word) muls8s::m#1 ← (signed word) muls8s::m#3 - (signed byte) muls8s::b#0 [ muls8s::a#0 muls8s::b#0 muls8s::i#2 muls8s::m#1 ] ( main:2::signed_multiply_results_compare:15::muls8s:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 muls8s::a#0 muls8s::b#0 muls8s::i#2 muls8s::m#1 ] ) + [138] (signed byte) muls8s::i#1 ← -- (signed byte) muls8s::i#2 [ muls8s::a#0 muls8s::b#0 muls8s::m#1 muls8s::i#1 ] ( main:2::signed_multiply_results_compare:15::muls8s:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 muls8s::a#0 muls8s::b#0 muls8s::m#1 muls8s::i#1 ] ) + [139] if((signed byte) muls8s::i#1!=(signed byte) muls8s::a#0) goto muls8s::@2 [ muls8s::a#0 muls8s::b#0 muls8s::m#1 muls8s::i#1 ] ( main:2::signed_multiply_results_compare:15::muls8s:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 muls8s::a#0 muls8s::b#0 muls8s::m#1 muls8s::i#1 ] ) + to:muls8s::@3 +muls8s::@3: scope:[muls8s] from muls8s::@1 muls8s::@2 muls8s::@5 + [140] (signed word) muls8s::return#0 ← phi( muls8s::@2/(signed word) muls8s::m#1 muls8s::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 muls8s::@5/(signed word) muls8s::m#2 ) [ muls8s::return#0 ] ( main:2::signed_multiply_results_compare:15::muls8s:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 muls8s::return#0 ] ) + to:muls8s::@return +muls8s::@return: scope:[muls8s] from muls8s::@3 + [141] return [ muls8s::return#0 ] ( main:2::signed_multiply_results_compare:15::muls8s:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 muls8s::return#0 ] ) to:@return -slow_signed_multiply::@1: scope:[slow_signed_multiply] from slow_signed_multiply - [142] if((signed byte) slow_signed_multiply::a#0<=(byte/signed byte/word/signed word/dword/signed dword) 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 - [143] (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/dword/signed dword) 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 ] ) - [143] (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/dword/signed dword) 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 ] ) - [144] (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 ] ) - [145] (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 ] ) - [146] 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 +muls8s::@1: scope:[muls8s] from muls8s + [142] if((signed byte) muls8s::a#0<=(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls8s::@3 [ muls8s::a#0 muls8s::b#0 ] ( main:2::signed_multiply_results_compare:15::muls8s:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 muls8s::a#0 muls8s::b#0 ] ) + to:muls8s::@5 +muls8s::@5: scope:[muls8s] from muls8s::@1 muls8s::@5 + [143] (signed byte) muls8s::j#2 ← phi( muls8s::@5/(signed byte) muls8s::j#1 muls8s::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 ) [ muls8s::a#0 muls8s::b#0 muls8s::m#5 muls8s::j#2 ] ( main:2::signed_multiply_results_compare:15::muls8s:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 muls8s::a#0 muls8s::b#0 muls8s::m#5 muls8s::j#2 ] ) + [143] (signed word) muls8s::m#5 ← phi( muls8s::@5/(signed word) muls8s::m#2 muls8s::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 ) [ muls8s::a#0 muls8s::b#0 muls8s::m#5 muls8s::j#2 ] ( main:2::signed_multiply_results_compare:15::muls8s:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 muls8s::a#0 muls8s::b#0 muls8s::m#5 muls8s::j#2 ] ) + [144] (signed word) muls8s::m#2 ← (signed word) muls8s::m#5 + (signed byte) muls8s::b#0 [ muls8s::a#0 muls8s::b#0 muls8s::m#2 muls8s::j#2 ] ( main:2::signed_multiply_results_compare:15::muls8s:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 muls8s::a#0 muls8s::b#0 muls8s::m#2 muls8s::j#2 ] ) + [145] (signed byte) muls8s::j#1 ← ++ (signed byte) muls8s::j#2 [ muls8s::a#0 muls8s::b#0 muls8s::m#2 muls8s::j#1 ] ( main:2::signed_multiply_results_compare:15::muls8s:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 muls8s::a#0 muls8s::b#0 muls8s::m#2 muls8s::j#1 ] ) + [146] if((signed byte) muls8s::j#1!=(signed byte) muls8s::a#0) goto muls8s::@5 [ muls8s::a#0 muls8s::b#0 muls8s::m#2 muls8s::j#1 ] ( main:2::signed_multiply_results_compare:15::muls8s:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 muls8s::a#0 muls8s::b#0 muls8s::m#2 muls8s::j#1 ] ) + to:muls8s::@3 multiply_results_compare: scope:[multiply_results_compare] from main::@4 [147] phi() [ line_cursor#10 char_cursor#30 ] ( main:2::multiply_results_compare:13 [ line_cursor#10 char_cursor#30 ] ) to:multiply_results_compare::@1 @@ -5479,20 +5475,20 @@ multiply_results_compare::@1: scope:[multiply_results_compare] from multiply_re to:multiply_results_compare::@2 multiply_results_compare::@2: scope:[multiply_results_compare] from multiply_results_compare::@1 multiply_results_compare::@3 [149] (byte) multiply_results_compare::b#2 ← phi( multiply_results_compare::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 multiply_results_compare::@3/(byte) multiply_results_compare::b#1 ) [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 ] ( main:2::multiply_results_compare:13 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 ] ) - [150] (byte) slow_multiply::a#0 ← (byte) multiply_results_compare::a#6 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::a#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::a#0 ] ) - [151] (byte) slow_multiply::b#0 ← (byte) multiply_results_compare::b#2 [ line_cursor#10 char_cursor#30 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#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::a#0 slow_multiply::b#0 ] ) - [152] call slow_multiply param-assignment [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::return#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::return#0 ] ) - [153] (word) slow_multiply::return#2 ← (word) slow_multiply::return#0 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::return#2 ] ( main:2::multiply_results_compare:13 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::return#2 ] ) + [150] (byte) muls8u::a#0 ← (byte) multiply_results_compare::a#6 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 muls8u::a#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 muls8u::a#0 ] ) + [151] (byte) muls8u::b#0 ← (byte) multiply_results_compare::b#2 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 muls8u::a#0 muls8u::b#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 muls8u::a#0 muls8u::b#0 ] ) + [152] call muls8u param-assignment [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 muls8u::return#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 muls8u::return#0 ] ) + [153] (word) muls8u::return#2 ← (word) muls8u::return#0 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 muls8u::return#2 ] ( main:2::multiply_results_compare:13 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 muls8u::return#2 ] ) to:multiply_results_compare::@8 multiply_results_compare::@8: scope:[multiply_results_compare] from multiply_results_compare::@2 - [154] (word) multiply_results_compare::ms#0 ← (word) slow_multiply::return#2 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ) - [155] (byte) multiply::a#1 ← (byte) multiply_results_compare::a#6 [ line_cursor#10 char_cursor#30 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#10 char_cursor#30 multiply::a#1 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ) - [156] (byte) multiply::b#1 ← (byte) multiply_results_compare::b#2 [ line_cursor#10 char_cursor#30 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#10 char_cursor#30 multiply::a#1 multiply::b#1 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ) - [157] call multiply param-assignment [ line_cursor#10 char_cursor#30 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#10 char_cursor#30 multiply::return#0 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ) - [158] (word) multiply::return#3 ← (word) multiply::return#0 [ line_cursor#10 char_cursor#30 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#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply::return#3 ] ) + [154] (word) multiply_results_compare::ms#0 ← (word) muls8u::return#2 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ) + [155] (byte) mulf8u::a#1 ← (byte) multiply_results_compare::a#6 [ line_cursor#10 char_cursor#30 mulf8u::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#10 char_cursor#30 mulf8u::a#1 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ) + [156] (byte) mulf8u::b#1 ← (byte) multiply_results_compare::b#2 [ line_cursor#10 char_cursor#30 mulf8u::a#1 mulf8u::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#10 char_cursor#30 mulf8u::a#1 mulf8u::b#1 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ) + [157] call mulf8u param-assignment [ line_cursor#10 char_cursor#30 mulf8u::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#10 char_cursor#30 mulf8u::return#0 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ) + [158] (word) mulf8u::return#3 ← (word) mulf8u::return#0 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 mulf8u::return#3 ] ( main:2::multiply_results_compare:13 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 mulf8u::return#3 ] ) to:multiply_results_compare::@9 multiply_results_compare::@9: scope:[multiply_results_compare] from multiply_results_compare::@8 - [159] (word) multiply_results_compare::ma#0 ← (word) multiply::return#3 [ line_cursor#10 char_cursor#30 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#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply_results_compare::ma#0 ] ) + [159] (word) multiply_results_compare::ma#0 ← (word) mulf8u::return#3 [ line_cursor#10 char_cursor#30 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#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply_results_compare::ma#0 ] ) [160] if((word) multiply_results_compare::ms#0==(word) multiply_results_compare::ma#0) goto multiply_results_compare::@3 [ line_cursor#10 char_cursor#30 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#10 char_cursor#30 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 @@ -5561,28 +5557,28 @@ multiply_error::@8: scope:[multiply_error] from multiply_error::@7 multiply_error::@return: scope:[multiply_error] from multiply_error::@8 [194] return [ line_cursor#1 ] ( main:2::multiply_results_compare:13::multiply_error:166 [ line_cursor#1 ] ) to:@return -slow_multiply: scope:[slow_multiply] from multiply_results_compare::@2 - [195] if((byte) slow_multiply::a#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto slow_multiply::@1 [ slow_multiply::a#0 slow_multiply::b#0 ] ( main:2::multiply_results_compare:13::slow_multiply:152 [ line_cursor#10 char_cursor#30 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 - [196] (byte) slow_multiply::i#2 ← phi( slow_multiply::@2/(byte) slow_multiply::i#1 slow_multiply/(byte/signed byte/word/signed word/dword/signed dword) 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:152 [ line_cursor#10 char_cursor#30 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 ] ) - [196] (word) slow_multiply::m#3 ← phi( slow_multiply::@2/(word) slow_multiply::m#1 slow_multiply/(byte/signed byte/word/signed word/dword/signed dword) 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:152 [ line_cursor#10 char_cursor#30 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 ] ) - [197] (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:152 [ line_cursor#10 char_cursor#30 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 ] ) - [198] (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:152 [ line_cursor#10 char_cursor#30 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 ] ) - [199] 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:152 [ line_cursor#10 char_cursor#30 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 - [200] (word) slow_multiply::return#0 ← phi( slow_multiply/(byte/signed byte/word/signed word/dword/signed dword) 0 slow_multiply::@2/(word) slow_multiply::m#1 ) [ slow_multiply::return#0 ] ( main:2::multiply_results_compare:13::slow_multiply:152 [ line_cursor#10 char_cursor#30 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 - [201] return [ slow_multiply::return#0 ] ( main:2::multiply_results_compare:13::slow_multiply:152 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::return#0 ] ) +muls8u: scope:[muls8u] from multiply_results_compare::@2 + [195] if((byte) muls8u::a#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls8u::@1 [ muls8u::a#0 muls8u::b#0 ] ( main:2::multiply_results_compare:13::muls8u:152 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 muls8u::a#0 muls8u::b#0 ] ) + to:muls8u::@2 +muls8u::@2: scope:[muls8u] from muls8u muls8u::@2 + [196] (byte) muls8u::i#2 ← phi( muls8u::@2/(byte) muls8u::i#1 muls8u/(byte/signed byte/word/signed word/dword/signed dword) 0 ) [ muls8u::a#0 muls8u::b#0 muls8u::m#3 muls8u::i#2 ] ( main:2::multiply_results_compare:13::muls8u:152 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 muls8u::a#0 muls8u::b#0 muls8u::m#3 muls8u::i#2 ] ) + [196] (word) muls8u::m#3 ← phi( muls8u::@2/(word) muls8u::m#1 muls8u/(byte/signed byte/word/signed word/dword/signed dword) 0 ) [ muls8u::a#0 muls8u::b#0 muls8u::m#3 muls8u::i#2 ] ( main:2::multiply_results_compare:13::muls8u:152 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 muls8u::a#0 muls8u::b#0 muls8u::m#3 muls8u::i#2 ] ) + [197] (word) muls8u::m#1 ← (word) muls8u::m#3 + (byte) muls8u::b#0 [ muls8u::a#0 muls8u::b#0 muls8u::i#2 muls8u::m#1 ] ( main:2::multiply_results_compare:13::muls8u:152 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 muls8u::a#0 muls8u::b#0 muls8u::i#2 muls8u::m#1 ] ) + [198] (byte) muls8u::i#1 ← ++ (byte) muls8u::i#2 [ muls8u::a#0 muls8u::b#0 muls8u::m#1 muls8u::i#1 ] ( main:2::multiply_results_compare:13::muls8u:152 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 muls8u::a#0 muls8u::b#0 muls8u::m#1 muls8u::i#1 ] ) + [199] if((byte) muls8u::i#1!=(byte) muls8u::a#0) goto muls8u::@2 [ muls8u::a#0 muls8u::b#0 muls8u::m#1 muls8u::i#1 ] ( main:2::multiply_results_compare:13::muls8u:152 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 muls8u::a#0 muls8u::b#0 muls8u::m#1 muls8u::i#1 ] ) + to:muls8u::@1 +muls8u::@1: scope:[muls8u] from muls8u muls8u::@2 + [200] (word) muls8u::return#0 ← phi( muls8u/(byte/signed byte/word/signed word/dword/signed dword) 0 muls8u::@2/(word) muls8u::m#1 ) [ muls8u::return#0 ] ( main:2::multiply_results_compare:13::muls8u:152 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 muls8u::return#0 ] ) + to:muls8u::@return +muls8u::@return: scope:[muls8u] from muls8u::@1 + [201] return [ muls8u::return#0 ] ( main:2::multiply_results_compare:13::muls8u:152 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 muls8u::return#0 ] ) to:@return multiply_tables_compare: scope:[multiply_tables_compare] from main::@3 [202] 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 - [203] (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 ] ) - [203] (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 ] ) + [203] (byte*) multiply_tables_compare::asm_sqr#2 ← phi( multiply_tables_compare/(const byte[512]) mula_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 ] ) + [203] (byte*) multiply_tables_compare::kc_sqr#2 ← phi( multiply_tables_compare/(const byte[512]) mulf_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 ] ) [204] 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 @@ -5609,7 +5605,7 @@ multiply_tables_compare::@return: scope:[multiply_tables_compare] from multiply multiply_tables_compare::@2: scope:[multiply_tables_compare] from multiply_tables_compare::@1 [215] (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 ] ) [216] (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 ] ) - [217] if((byte*) multiply_tables_compare::kc_sqr#1<(const byte[512]) mul_sqr1_lo#0+(word/signed word/dword/signed dword) 512*(byte/signed byte/word/signed word/dword/signed dword) 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 ] ) + [217] if((byte*) multiply_tables_compare::kc_sqr#1<(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512*(byte/signed byte/word/signed word/dword/signed dword) 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 [218] phi() [ ] ( main:2::multiply_tables_compare:11 [ ] ) @@ -5620,71 +5616,71 @@ multiply_tables_compare::@10: scope:[multiply_tables_compare] from multiply_tab [221] call print_ln param-assignment [ line_cursor#1 ] ( main:2::multiply_tables_compare:11 [ line_cursor#1 ] ) [222] (byte*~) char_cursor#201 ← (byte*) line_cursor#1 [ line_cursor#1 char_cursor#201 ] ( main:2::multiply_tables_compare:11 [ line_cursor#1 char_cursor#201 ] ) to:multiply_tables_compare::@return -init_multiply_asm: scope:[init_multiply_asm] from main::@2 - asm { ldx#$00 txa .byte$c9 lb1: tya adc#$00 ml1: staasm_mul_sqr1_hi,x tay cmp#$40 txa ror ml9: adc#$00 staml9+1 inx ml0: staasm_mul_sqr1_lo,x bnelb1 incml0+2 incml1+2 clc iny bnelb1 ldx#$00 ldy#$ff !: ldaasm_mul_sqr1_hi+1,x staasm_mul_sqr2_hi+$100,x ldaasm_mul_sqr1_hi,x staasm_mul_sqr2_hi,y ldaasm_mul_sqr1_lo+1,x staasm_mul_sqr2_lo+$100,x ldaasm_mul_sqr1_lo,x staasm_mul_sqr2_lo,y dey inx bne!- } - [224] *((const byte*) init_multiply_asm::mem#0) ← *((const byte[512]) asm_mul_sqr1_lo#0) [ ] ( main:2::init_multiply_asm:9 [ ] ) - [225] *((const byte*) init_multiply_asm::mem#0) ← *((const byte[512]) asm_mul_sqr1_hi#0) [ ] ( main:2::init_multiply_asm:9 [ ] ) - [226] *((const byte*) init_multiply_asm::mem#0) ← *((const byte[512]) asm_mul_sqr2_lo#0) [ ] ( main:2::init_multiply_asm:9 [ ] ) - [227] *((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 - [228] return [ ] ( main:2::init_multiply_asm:9 [ ] ) +mulf_init_asm: scope:[mulf_init_asm] from main::@2 + asm { ldx#$00 txa .byte$c9 lb1: tya adc#$00 ml1: stamula_sqr1_hi,x tay cmp#$40 txa ror ml9: adc#$00 staml9+1 inx ml0: stamula_sqr1_lo,x bnelb1 incml0+2 incml1+2 clc iny bnelb1 ldx#$00 ldy#$ff !: ldamula_sqr1_hi+1,x stamula_sqr2_hi+$100,x ldamula_sqr1_hi,x stamula_sqr2_hi,y ldamula_sqr1_lo+1,x stamula_sqr2_lo+$100,x ldamula_sqr1_lo,x stamula_sqr2_lo,y dey inx bne!- } + [224] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr1_lo#0) [ ] ( main:2::mulf_init_asm:9 [ ] ) + [225] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr1_hi#0) [ ] ( main:2::mulf_init_asm:9 [ ] ) + [226] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr2_lo#0) [ ] ( main:2::mulf_init_asm:9 [ ] ) + [227] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr2_hi#0) [ ] ( main:2::mulf_init_asm:9 [ ] ) + to:mulf_init_asm::@return +mulf_init_asm::@return: scope:[mulf_init_asm] from mulf_init_asm + [228] return [ ] ( main:2::mulf_init_asm:9 [ ] ) to:@return -init_multiply: scope:[init_multiply] from main::@1 - [229] phi() [ ] ( main:2::init_multiply:7 [ ] ) - to:init_multiply::@1 -init_multiply::@1: scope:[init_multiply] from init_multiply init_multiply::@2 - [230] (byte) init_multiply::x_2#3 ← phi( init_multiply/(byte/signed byte/word/signed word/dword/signed dword) 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 ] ) - [230] (byte*) init_multiply::sqr1_hi#2 ← phi( init_multiply/(const byte[512]) mul_sqr1_hi#0+(byte/signed byte/word/signed word/dword/signed dword) 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 ] ) - [230] (byte*) init_multiply::sqr1_lo#2 ← phi( init_multiply/(const byte[512]) mul_sqr1_lo#0+(byte/signed byte/word/signed word/dword/signed dword) 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 ] ) - [230] (word) init_multiply::sqr#4 ← phi( init_multiply/(byte/signed byte/word/signed word/dword/signed dword) 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 ] ) - [230] (byte) init_multiply::c#2 ← phi( init_multiply/(byte/signed byte/word/signed word/dword/signed dword) 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 ] ) - [231] (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 ] ) - [232] (byte~) init_multiply::$2 ← (byte) init_multiply::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 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 ] ) - [233] if((byte~) init_multiply::$2!=(byte/signed byte/word/signed word/dword/signed dword) 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 - [234] (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 ] ) - [235] (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 - [236] (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 ] ) - [236] (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 ] ) - [237] (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 ] ) - [238] *((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 ] ) - [239] (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 ] ) - [240] *((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 ] ) - [241] (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 ] ) - [242] (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 ] ) - [243] (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 ] ) - [244] if((byte*) init_multiply::sqr1_lo#1!=(const byte[512]) mul_sqr1_lo#0+(word/signed word/dword/signed dword) 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 - [245] (byte) init_multiply::dir#2 ← phi( init_multiply::@4/(byte) init_multiply::dir#3 init_multiply::@2/(byte/word/signed word/dword/signed dword) 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 ] ) - [245] (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 ] ) - [245] (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 ] ) - [245] (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/dword/signed dword) 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 ] ) - [246] *((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 ] ) - [247] *((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 ] ) - [248] (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 ] ) - [249] (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 ] ) - [250] if((byte) init_multiply::x_255#1!=(byte/signed byte/word/signed word/dword/signed dword) 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 - [251] (byte) init_multiply::dir#3 ← phi( init_multiply::@12/(byte) init_multiply::dir#2 init_multiply::@3/(byte/signed byte/word/signed word/dword/signed dword) 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 ] ) - [252] (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 ] ) - [253] if((byte*) init_multiply::sqr2_lo#1!=(const byte[512]) mul_sqr2_lo#0+(word/signed word/dword/signed dword) 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 - [254] *((const byte[512]) mul_sqr2_lo#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mul_sqr1_lo#0+(word/signed word/dword/signed dword) 256) [ ] ( main:2::init_multiply:7 [ ] ) - [255] *((const byte[512]) mul_sqr2_hi#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mul_sqr1_hi#0+(word/signed word/dword/signed dword) 256) [ ] ( main:2::init_multiply:7 [ ] ) - to:init_multiply::@return -init_multiply::@return: scope:[init_multiply] from init_multiply::@8 - [256] return [ ] ( main:2::init_multiply:7 [ ] ) +mulf_init: scope:[mulf_init] from main::@1 + [229] phi() [ ] ( main:2::mulf_init:7 [ ] ) + to:mulf_init::@1 +mulf_init::@1: scope:[mulf_init] from mulf_init mulf_init::@2 + [230] (byte) mulf_init::x_2#3 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 0 mulf_init::@2/(byte) mulf_init::x_2#2 ) [ mulf_init::c#2 mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 ] ( main:2::mulf_init:7 [ mulf_init::c#2 mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 ] ) + [230] (byte*) mulf_init::sqr1_hi#2 ← phi( mulf_init/(const byte[512]) mulf_sqr1_hi#0+(byte/signed byte/word/signed word/dword/signed dword) 1 mulf_init::@2/(byte*) mulf_init::sqr1_hi#1 ) [ mulf_init::c#2 mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 ] ( main:2::mulf_init:7 [ mulf_init::c#2 mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 ] ) + [230] (byte*) mulf_init::sqr1_lo#2 ← phi( mulf_init/(const byte[512]) mulf_sqr1_lo#0+(byte/signed byte/word/signed word/dword/signed dword) 1 mulf_init::@2/(byte*) mulf_init::sqr1_lo#1 ) [ mulf_init::c#2 mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 ] ( main:2::mulf_init:7 [ mulf_init::c#2 mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 ] ) + [230] (word) mulf_init::sqr#4 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 0 mulf_init::@2/(word) mulf_init::sqr#1 ) [ mulf_init::c#2 mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 ] ( main:2::mulf_init:7 [ mulf_init::c#2 mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 ] ) + [230] (byte) mulf_init::c#2 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 0 mulf_init::@2/(byte) mulf_init::c#1 ) [ mulf_init::c#2 mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 ] ( main:2::mulf_init:7 [ mulf_init::c#2 mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 ] ) + [231] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 [ mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 ] ( main:2::mulf_init:7 [ mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 ] ) + [232] (byte~) mulf_init::$2 ← (byte) mulf_init::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 1 [ mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$2 ] ( main:2::mulf_init:7 [ mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$2 ] ) + [233] if((byte~) mulf_init::$2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@2 [ mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 ] ( main:2::mulf_init:7 [ mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 ] ) + to:mulf_init::@5 +mulf_init::@5: scope:[mulf_init] from mulf_init::@1 + [234] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 [ mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#1 ] ( main:2::mulf_init:7 [ mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#1 ] ) + [235] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#1 mulf_init::sqr#2 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#1 mulf_init::sqr#2 ] ) + to:mulf_init::@2 +mulf_init::@2: scope:[mulf_init] from mulf_init::@1 mulf_init::@5 + [236] (byte) mulf_init::x_2#2 ← phi( mulf_init::@1/(byte) mulf_init::x_2#3 mulf_init::@5/(byte) mulf_init::x_2#1 ) [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ) + [236] (word) mulf_init::sqr#3 ← phi( mulf_init::@1/(word) mulf_init::sqr#4 mulf_init::@5/(word) mulf_init::sqr#2 ) [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ) + [237] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$5 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$5 ] ) + [238] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ) + [239] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$6 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$6 ] ) + [240] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ) + [241] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ) + [242] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ) + [243] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 [ mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_lo#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ( main:2::mulf_init:7 [ mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_lo#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ) + [244] if((byte*) mulf_init::sqr1_lo#1!=(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512) goto mulf_init::@1 [ mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_lo#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ( main:2::mulf_init:7 [ mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_lo#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ) + to:mulf_init::@3 +mulf_init::@3: scope:[mulf_init] from mulf_init::@2 mulf_init::@4 + [245] (byte) mulf_init::dir#2 ← phi( mulf_init::@4/(byte) mulf_init::dir#3 mulf_init::@2/(byte/word/signed word/dword/signed dword) 255 ) [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) + [245] (byte*) mulf_init::sqr2_hi#2 ← phi( mulf_init::@4/(byte*) mulf_init::sqr2_hi#1 mulf_init::@2/(const byte[512]) mulf_sqr2_hi#0 ) [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) + [245] (byte*) mulf_init::sqr2_lo#2 ← phi( mulf_init::@4/(byte*) mulf_init::sqr2_lo#1 mulf_init::@2/(const byte[512]) mulf_sqr2_lo#0 ) [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) + [245] (byte) mulf_init::x_255#2 ← phi( mulf_init::@4/(byte) mulf_init::x_255#1 mulf_init::@2/((byte))-(byte/signed byte/word/signed word/dword/signed dword) 1 ) [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) + [246] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[512]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) + [247] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[512]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) + [248] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::sqr2_hi#1 ] ( main:2::mulf_init:7 [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::sqr2_hi#1 ] ) + [249] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ( main:2::mulf_init:7 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ) + [250] if((byte) mulf_init::x_255#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@12 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ( main:2::mulf_init:7 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ) + to:mulf_init::@4 +mulf_init::@4: scope:[mulf_init] from mulf_init::@12 mulf_init::@3 + [251] (byte) mulf_init::dir#3 ← phi( mulf_init::@12/(byte) mulf_init::dir#2 mulf_init::@3/(byte/signed byte/word/signed word/dword/signed dword) 1 ) [ mulf_init::sqr2_lo#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 mulf_init::dir#3 ] ( main:2::mulf_init:7 [ mulf_init::sqr2_lo#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 mulf_init::dir#3 ] ) + [252] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 [ mulf_init::x_255#1 mulf_init::sqr2_lo#1 mulf_init::sqr2_hi#1 mulf_init::dir#3 ] ( main:2::mulf_init:7 [ mulf_init::x_255#1 mulf_init::sqr2_lo#1 mulf_init::sqr2_hi#1 mulf_init::dir#3 ] ) + [253] if((byte*) mulf_init::sqr2_lo#1!=(const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) goto mulf_init::@3 [ mulf_init::x_255#1 mulf_init::sqr2_lo#1 mulf_init::sqr2_hi#1 mulf_init::dir#3 ] ( main:2::mulf_init:7 [ mulf_init::x_255#1 mulf_init::sqr2_lo#1 mulf_init::sqr2_hi#1 mulf_init::dir#3 ] ) + to:mulf_init::@8 +mulf_init::@8: scope:[mulf_init] from mulf_init::@4 + [254] *((const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 256) [ ] ( main:2::mulf_init:7 [ ] ) + [255] *((const byte[512]) mulf_sqr2_hi#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_hi#0+(word/signed word/dword/signed dword) 256) [ ] ( main:2::mulf_init:7 [ ] ) + to:mulf_init::@return +mulf_init::@return: scope:[mulf_init] from mulf_init::@8 + [256] return [ ] ( main:2::mulf_init:7 [ ] ) to:@return -init_multiply::@12: scope:[init_multiply] from init_multiply::@3 - [257] 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 +mulf_init::@12: scope:[mulf_init] from mulf_init::@3 + [257] phi() [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ( main:2::mulf_init:7 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ) + to:mulf_init::@4 print_cls: scope:[print_cls] from main [258] phi() [ ] ( main:2::print_cls:5 [ ] ) to:print_cls::@1 @@ -5755,21 +5751,21 @@ print_sbyte::@2 dominated by main::@1 main::@2 main::@5 main::@3 main::@4 signe 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 +mulf8s 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 mulf8s main @begin +mulf8s::@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::@8 signed_multiply_results_compare @20 mulf8s main @begin mulf8s::@6 +mulf8s::@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::@8 signed_multiply_results_compare @20 mulf8s main @begin mulf8s::@3 mulf8s::@6 +mulf8s::@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::@8 signed_multiply_results_compare @20 mulf8s main @begin mulf8s::@1 mulf8s::@6 +mulf8s::@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::@8 signed_multiply_results_compare @20 mulf8s main @begin mulf8s::@1 mulf8s::@4 mulf8s::@6 +mulf8s::@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::@8 signed_multiply_results_compare @20 mulf8s main @begin mulf8s::@2 mulf8s::@1 mulf8s::@6 +mulf8s::@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::@8 signed_multiply_results_compare @20 mulf8s main @begin mulf8s::@2 mulf8s::@1 mulf8s::@return mulf8s::@6 +mulf8u dominated by main::@1 main::@2 main::@3 main::@4 mulf8u @20 main @begin +mulf8u::@return dominated by main::@1 main::@2 main::@3 main::@4 mulf8u @20 main @begin mulf8u::@return +muls8s dominated by muls8s 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 +muls8s::@2 dominated by muls8s main::@1 main::@2 main::@5 main::@3 main::@4 muls8s::@2 signed_multiply_results_compare::@2 signed_multiply_results_compare::@1 signed_multiply_results_compare @20 main @begin +muls8s::@3 dominated by muls8s main::@1 main::@2 main::@5 main::@3 main::@4 muls8s::@3 signed_multiply_results_compare::@2 signed_multiply_results_compare::@1 signed_multiply_results_compare @20 main @begin +muls8s::@return dominated by muls8s main::@1 main::@2 main::@5 main::@3 main::@4 muls8s::@3 signed_multiply_results_compare::@2 signed_multiply_results_compare::@1 signed_multiply_results_compare @20 muls8s::@return main @begin +muls8s::@1 dominated by muls8s main::@1 main::@2 main::@5 main::@3 main::@4 muls8s::@1 signed_multiply_results_compare::@2 signed_multiply_results_compare::@1 signed_multiply_results_compare @20 main @begin +muls8s::@5 dominated by muls8s main::@1 main::@2 main::@5 main::@3 main::@4 muls8s::@5 muls8s::@1 signed_multiply_results_compare::@2 signed_multiply_results_compare::@1 signed_multiply_results_compare @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 @@ -5791,10 +5787,10 @@ multiply_error::@6 dominated by multiply_error::@6 multiply_error::@5 multiply_ 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 +muls8u dominated by muls8u main::@1 main::@2 main::@3 main::@4 multiply_results_compare::@2 multiply_results_compare multiply_results_compare::@1 @20 main @begin +muls8u::@2 dominated by muls8u main::@1 main::@2 main::@3 main::@4 multiply_results_compare::@2 multiply_results_compare multiply_results_compare::@1 @20 main @begin muls8u::@2 +muls8u::@1 dominated by muls8u main::@1 main::@2 main::@3 main::@4 multiply_results_compare::@2 multiply_results_compare multiply_results_compare::@1 @20 main @begin muls8u::@1 +muls8u::@return dominated by muls8u main::@1 main::@2 main::@3 main::@4 multiply_results_compare::@2 multiply_results_compare multiply_results_compare::@1 @20 main @begin muls8u::@1 muls8u::@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 @@ -5805,17 +5801,17 @@ multiply_tables_compare::@return dominated by main::@1 main::@2 main::@3 multip 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 +mulf_init_asm dominated by main::@1 main::@2 mulf_init_asm @20 main @begin +mulf_init_asm::@return dominated by main::@1 main::@2 mulf_init_asm::@return mulf_init_asm @20 main @begin +mulf_init dominated by main::@1 @20 main @begin mulf_init +mulf_init::@1 dominated by main::@1 @20 main @begin mulf_init mulf_init::@1 +mulf_init::@5 dominated by main::@1 @20 main @begin mulf_init mulf_init::@1 mulf_init::@5 +mulf_init::@2 dominated by main::@1 @20 main @begin mulf_init mulf_init::@2 mulf_init::@1 +mulf_init::@3 dominated by main::@1 @20 main @begin mulf_init mulf_init::@2 mulf_init::@1 mulf_init::@3 +mulf_init::@4 dominated by main::@1 @20 main @begin mulf_init mulf_init::@2 mulf_init::@1 mulf_init::@4 mulf_init::@3 +mulf_init::@8 dominated by main::@1 @20 main @begin mulf_init mulf_init::@2 mulf_init::@1 mulf_init::@4 mulf_init::@3 mulf_init::@8 +mulf_init::@return dominated by main::@1 mulf_init::@return @20 main @begin mulf_init mulf_init::@2 mulf_init::@1 mulf_init::@4 mulf_init::@3 mulf_init::@8 +mulf_init::@12 dominated by mulf_init::@12 main::@1 @20 main @begin mulf_init mulf_init::@2 mulf_init::@1 mulf_init::@3 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 @@ -5825,40 +5821,40 @@ Found back edge: Loop head: signed_multiply_results_compare::@2 tails: signed_mu 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: muls8s::@2 tails: muls8s::@2 blocks: null +Found back edge: Loop head: muls8s::@5 tails: muls8s::@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: muls8u::@2 tails: muls8u::@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: mulf_init::@1 tails: mulf_init::@2 blocks: null +Found back edge: Loop head: mulf_init::@3 tails: mulf_init::@4 blocks: null Found back edge: Loop head: print_cls::@1 tails: print_cls::@1 blocks: null 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: muls8s::@2 tails: muls8s::@2 blocks: muls8s::@2 +Populated: Loop head: muls8s::@5 tails: muls8s::@5 blocks: muls8s::@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: muls8u::@2 tails: muls8u::@2 blocks: muls8u::@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: mulf_init::@1 tails: mulf_init::@2 blocks: mulf_init::@2 mulf_init::@1 mulf_init::@5 +Populated: Loop head: mulf_init::@3 tails: mulf_init::@4 blocks: mulf_init::@4 mulf_init::@12 mulf_init::@3 Populated: Loop head: print_cls::@1 tails: print_cls::@1 blocks: print_cls::@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: muls8s::@2 tails: muls8s::@2 blocks: muls8s::@2 +Loop head: muls8s::@5 tails: muls8s::@5 blocks: muls8s::@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: muls8u::@2 tails: muls8u::@2 blocks: muls8u::@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 -Loop head: init_multiply::@3 tails: init_multiply::@4 blocks: init_multiply::@4 init_multiply::@12 init_multiply::@3 +Loop head: mulf_init::@1 tails: mulf_init::@2 blocks: mulf_init::@2 mulf_init::@1 mulf_init::@5 +Loop head: mulf_init::@3 tails: mulf_init::@4 blocks: mulf_init::@4 mulf_init::@12 mulf_init::@3 Loop head: print_cls::@1 tails: print_cls::@1 blocks: print_cls::@1 NATURAL LOOPS WITH DEPTH @@ -5866,10 +5862,10 @@ Found 0 loops in scope [] Found 0 loops in scope [main] Found 1 loops in scope [print_cls] Loop head: print_cls::@1 tails: print_cls::@1 blocks: print_cls::@1 -Found 2 loops in scope [init_multiply] - Loop head: init_multiply::@1 tails: init_multiply::@2 blocks: init_multiply::@2 init_multiply::@1 init_multiply::@5 - Loop head: init_multiply::@3 tails: init_multiply::@4 blocks: init_multiply::@4 init_multiply::@12 init_multiply::@3 -Found 0 loops in scope [init_multiply_asm] +Found 2 loops in scope [mulf_init] + Loop head: mulf_init::@1 tails: mulf_init::@2 blocks: mulf_init::@2 mulf_init::@1 mulf_init::@5 + Loop head: mulf_init::@3 tails: mulf_init::@4 blocks: mulf_init::@4 mulf_init::@12 mulf_init::@3 +Found 0 loops in scope [mulf_init_asm] Found 1 loops in scope [multiply_tables_compare] Loop head: multiply_tables_compare::@1 tails: multiply_tables_compare::@2 blocks: multiply_tables_compare::@2 multiply_tables_compare::@1 Found 2 loops in scope [multiply_results_compare] @@ -5883,14 +5879,14 @@ Found 1 loops in scope [print_str] Found 0 loops in scope [print_word] Found 1 loops in scope [print_ln] Loop head: print_ln::@1 tails: print_ln::@1 blocks: print_ln::@1 -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 1 loops in scope [muls8u] + Loop head: muls8u::@2 tails: muls8u::@2 blocks: muls8u::@2 +Found 0 loops in scope [mulf8u] 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 2 loops in scope [muls8s] + Loop head: muls8s::@2 tails: muls8s::@2 blocks: muls8s::@2 + Loop head: muls8s::@5 tails: muls8s::@5 blocks: muls8s::@5 +Found 0 loops in scope [mulf8s] Found 0 loops in scope [signed_multiply_error] Found 0 loops in scope [print_byte] Found 0 loops in scope [print_sbyte] @@ -5900,24 +5896,20 @@ Loop head: signed_multiply_results_compare::@2 tails: signed_multiply_results_co 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: muls8s::@2 tails: muls8s::@2 blocks: muls8s::@2 depth: 3 +Loop head: muls8s::@5 tails: muls8s::@5 blocks: muls8s::@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: muls8u::@2 tails: muls8u::@2 blocks: muls8u::@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 -Loop head: init_multiply::@3 tails: init_multiply::@4 blocks: init_multiply::@4 init_multiply::@12 init_multiply::@3 depth: 1 +Loop head: mulf_init::@1 tails: mulf_init::@2 blocks: mulf_init::@2 mulf_init::@1 mulf_init::@5 depth: 1 +Loop head: mulf_init::@3 tails: mulf_init::@4 blocks: mulf_init::@4 mulf_init::@12 mulf_init::@3 depth: 1 Loop head: print_cls::@1 tails: print_cls::@1 blocks: print_cls::@1 depth: 1 VARIABLE REGISTER WEIGHTS (byte*) BGCOL (byte*) SCREEN -(byte[512]) asm_mul_sqr1_hi -(byte[512]) asm_mul_sqr1_lo -(byte[512]) asm_mul_sqr2_hi -(byte[512]) asm_mul_sqr2_lo (byte*) char_cursor (byte*) char_cursor#1 11.0 (byte*) char_cursor#122 1.6944444444444446 @@ -5933,67 +5925,121 @@ VARIABLE REGISTER WEIGHTS (byte*~) char_cursor#201 4.0 (byte*) char_cursor#30 0.27586206896551724 (byte*) char_cursor#78 6.0 -(void()) init_multiply() -(byte~) init_multiply::$2 22.0 -(byte~) init_multiply::$5 22.0 -(byte~) init_multiply::$6 22.0 -(byte) init_multiply::c -(byte) init_multiply::c#1 2.357142857142857 -(byte) init_multiply::c#2 22.0 -(byte) init_multiply::dir -(byte) init_multiply::dir#2 4.714285714285714 -(byte) init_multiply::dir#3 7.333333333333333 -(word) init_multiply::sqr -(word) init_multiply::sqr#1 7.333333333333333 -(word) init_multiply::sqr#2 22.0 -(word) init_multiply::sqr#3 9.166666666666666 -(word) init_multiply::sqr#4 6.6000000000000005 -(byte*) init_multiply::sqr1_hi -(byte*) init_multiply::sqr1_hi#1 5.5 -(byte*) init_multiply::sqr1_hi#2 3.0 -(byte*) init_multiply::sqr1_lo -(byte*) init_multiply::sqr1_lo#1 16.5 -(byte*) init_multiply::sqr1_lo#2 2.5384615384615383 -(byte*) init_multiply::sqr2_hi -(byte*) init_multiply::sqr2_hi#1 3.142857142857143 -(byte*) init_multiply::sqr2_hi#2 11.0 -(byte*) init_multiply::sqr2_lo -(byte*) init_multiply::sqr2_lo#1 16.5 -(byte*) init_multiply::sqr2_lo#2 4.125 -(byte) init_multiply::x_2 -(byte) init_multiply::x_2#1 11.0 -(byte) init_multiply::x_2#2 4.888888888888889 -(byte) init_multiply::x_2#3 8.25 -(byte) init_multiply::x_255 -(byte) init_multiply::x_255#1 5.5 -(byte) init_multiply::x_255#2 11.0 -(void()) init_multiply_asm() -(byte*) init_multiply_asm::mem (byte*) line_cursor (byte*) line_cursor#1 0.8181818181818181 (byte*) line_cursor#10 0.1276595744680851 (byte*) line_cursor#23 24.0 (byte*) line_cursor#45 10.0 (void()) main() -(byte[512]) mul_sqr1_hi -(byte[512]) mul_sqr1_lo -(byte[512]) mul_sqr2_hi -(byte[512]) mul_sqr2_lo -(word()) multiply((byte) multiply::a , (byte) multiply::b) -(byte) multiply::a -(byte) multiply::a#1 101.0 -(byte) multiply::a#2 105.0 -(byte~) multiply::a#4 2.0 -(byte) multiply::b -(byte) multiply::b#1 202.0 -(byte) multiply::b#2 52.5 -(byte~) multiply::b#4 4.0 -(byte*) multiply::memA -(byte*) multiply::memB -(word) multiply::return -(word) multiply::return#0 26.25 -(word) multiply::return#2 4.0 -(word) multiply::return#3 202.0 +(byte[512]) mula_sqr1_hi +(byte[512]) mula_sqr1_lo +(byte[512]) mula_sqr2_hi +(byte[512]) mula_sqr2_lo +(signed word()) mulf8s((signed byte) mulf8s::a , (signed byte) mulf8s::b) +(byte~) mulf8s::$12 4.0 +(byte/signed byte/word/signed word/dword/signed dword~) mulf8s::$16 4.0 +(byte/signed byte/word/signed word/dword/signed dword~) mulf8s::$17 4.0 +(byte~) mulf8s::$6 4.0 +(signed byte) mulf8s::a +(signed byte) mulf8s::a#0 7.357142857142858 +(signed byte) mulf8s::b +(signed byte) mulf8s::b#0 9.363636363636363 +(word) mulf8s::m +(word) mulf8s::m#0 2.0 +(word) mulf8s::m#1 4.0 +(word) mulf8s::m#2 4.0 +(word) mulf8s::m#4 1.3333333333333333 +(word) mulf8s::m#5 2.5 +(signed word) mulf8s::return +(signed word) mulf8s::return#2 202.0 +(word()) mulf8u((byte) mulf8u::a , (byte) mulf8u::b) +(byte) mulf8u::a +(byte) mulf8u::a#1 101.0 +(byte) mulf8u::a#2 105.0 +(byte~) mulf8u::a#3 2.0 +(byte) mulf8u::b +(byte) mulf8u::b#1 202.0 +(byte) mulf8u::b#2 52.5 +(byte~) mulf8u::b#3 4.0 +(byte*) mulf8u::memA +(byte*) mulf8u::memB +(word) mulf8u::return +(word) mulf8u::return#0 26.25 +(word) mulf8u::return#2 4.0 +(word) mulf8u::return#3 202.0 +(void()) mulf_init() +(byte~) mulf_init::$2 22.0 +(byte~) mulf_init::$5 22.0 +(byte~) mulf_init::$6 22.0 +(byte) mulf_init::c +(byte) mulf_init::c#1 2.357142857142857 +(byte) mulf_init::c#2 22.0 +(byte) mulf_init::dir +(byte) mulf_init::dir#2 4.714285714285714 +(byte) mulf_init::dir#3 7.333333333333333 +(word) mulf_init::sqr +(word) mulf_init::sqr#1 7.333333333333333 +(word) mulf_init::sqr#2 22.0 +(word) mulf_init::sqr#3 9.166666666666666 +(word) mulf_init::sqr#4 6.6000000000000005 +(byte*) mulf_init::sqr1_hi +(byte*) mulf_init::sqr1_hi#1 5.5 +(byte*) mulf_init::sqr1_hi#2 3.0 +(byte*) mulf_init::sqr1_lo +(byte*) mulf_init::sqr1_lo#1 16.5 +(byte*) mulf_init::sqr1_lo#2 2.5384615384615383 +(byte*) mulf_init::sqr2_hi +(byte*) mulf_init::sqr2_hi#1 3.142857142857143 +(byte*) mulf_init::sqr2_hi#2 11.0 +(byte*) mulf_init::sqr2_lo +(byte*) mulf_init::sqr2_lo#1 16.5 +(byte*) mulf_init::sqr2_lo#2 4.125 +(byte) mulf_init::x_2 +(byte) mulf_init::x_2#1 11.0 +(byte) mulf_init::x_2#2 4.888888888888889 +(byte) mulf_init::x_2#3 8.25 +(byte) mulf_init::x_255 +(byte) mulf_init::x_255#1 5.5 +(byte) mulf_init::x_255#2 11.0 +(void()) mulf_init_asm() +(byte*) mulf_init_asm::mem +(byte[512]) mulf_sqr1_hi +(byte[512]) mulf_sqr1_lo +(byte[512]) mulf_sqr2_hi +(byte[512]) mulf_sqr2_lo +(signed word()) muls8s((signed byte) muls8s::a , (signed byte) muls8s::b) +(signed byte) muls8s::a +(signed byte) muls8s::a#0 175.58333333333334 +(signed byte) muls8s::b +(signed byte) muls8s::b#0 191.1818181818182 +(signed byte) muls8s::i +(signed byte) muls8s::i#1 1501.5 +(signed byte) muls8s::i#2 1001.0 +(signed byte) muls8s::j +(signed byte) muls8s::j#1 1501.5 +(signed byte) muls8s::j#2 1001.0 +(signed word) muls8s::m +(signed word) muls8s::m#1 1001.0 +(signed word) muls8s::m#2 1001.0 +(signed word) muls8s::m#3 2002.0 +(signed word) muls8s::m#5 2002.0 +(signed word) muls8s::return +(signed word) muls8s::return#0 701.0 +(signed word) muls8s::return#2 202.0 +(word()) muls8u((byte) muls8u::a , (byte) muls8u::b) +(byte) muls8u::a +(byte) muls8u::a#0 157.71428571428572 +(byte) muls8u::b +(byte) muls8u::b#0 183.66666666666669 +(byte) muls8u::i +(byte) muls8u::i#1 1501.5 +(byte) muls8u::i#2 1001.0 +(word) muls8u::m +(word) muls8u::m#1 1001.0 +(word) muls8u::m#3 2002.0 +(word) muls8u::return +(word) muls8u::return#0 367.33333333333337 +(word) muls8u::return#2 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 @@ -6069,23 +6115,6 @@ VARIABLE REGISTER WEIGHTS (word) print_word::w#4 4.0 (word) print_word::w#5 4.666666666666666 (word~) print_word::w#9 4.0 -(signed word()) signed_multiply((signed byte) signed_multiply::a , (signed byte) signed_multiply::b) -(byte~) signed_multiply::$12 4.0 -(byte/signed byte/word/signed word/dword/signed dword~) signed_multiply::$16 4.0 -(byte/signed byte/word/signed word/dword/signed dword~) signed_multiply::$17 4.0 -(byte~) signed_multiply::$6 4.0 -(signed byte) signed_multiply::a -(signed byte) signed_multiply::a#0 7.357142857142858 -(signed byte) signed_multiply::b -(signed byte) signed_multiply::b#0 9.363636363636363 -(word) signed_multiply::m -(word) signed_multiply::m#0 2.0 -(word) signed_multiply::m#1 4.0 -(word) signed_multiply::m#2 4.0 -(word) signed_multiply::m#4 1.3333333333333333 -(word) signed_multiply::m#5 2.5 -(signed word) signed_multiply::return -(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 @@ -6106,39 +6135,6 @@ VARIABLE REGISTER WEIGHTS (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 -(byte) slow_multiply::b -(byte) slow_multiply::b#0 183.66666666666669 -(byte) slow_multiply::i -(byte) slow_multiply::i#1 1501.5 -(byte) slow_multiply::i#2 1001.0 -(word) slow_multiply::m -(word) slow_multiply::m#1 1001.0 -(word) slow_multiply::m#3 2002.0 -(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 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::a#1 ] @@ -6151,35 +6147,35 @@ Initial phi equivalence classes [ print_char::ch#4 print_char::ch#2 print_char::ch#3 ] [ char_cursor#78 char_cursor#129 char_cursor#128 char_cursor#124 char_cursor#141 char_cursor#30 char_cursor#123 char_cursor#17 char_cursor#122 char_cursor#176 char_cursor#180 char_cursor#1 char_cursor#126 char_cursor#201 ] [ 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#4 ] -[ multiply::b#2 multiply::b#1 multiply::b#4 ] -[ 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 ] +[ mulf8s::m#4 mulf8s::m#5 mulf8s::m#1 mulf8s::m#0 mulf8s::m#2 ] +[ mulf8u::a#2 mulf8u::a#3 mulf8u::a#1 ] +[ mulf8u::b#2 mulf8u::b#3 mulf8u::b#1 ] +[ muls8s::i#2 muls8s::i#1 ] +[ muls8s::m#5 muls8s::return#0 muls8s::m#3 muls8s::m#1 muls8s::m#2 ] +[ muls8s::j#2 muls8s::j#1 ] [ multiply_results_compare::a#6 multiply_results_compare::a#1 ] [ multiply_results_compare::b#2 multiply_results_compare::b#1 ] -[ slow_multiply::i#2 slow_multiply::i#1 ] -[ slow_multiply::return#0 slow_multiply::m#3 slow_multiply::m#1 ] +[ muls8u::i#2 muls8u::i#1 ] +[ muls8u::return#0 muls8u::m#3 muls8u::m#1 ] [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::kc_sqr#1 ] [ multiply_tables_compare::asm_sqr#2 multiply_tables_compare::asm_sqr#1 ] -[ init_multiply::c#2 init_multiply::c#1 ] -[ init_multiply::sqr1_lo#2 init_multiply::sqr1_lo#1 ] -[ init_multiply::sqr1_hi#2 init_multiply::sqr1_hi#1 ] -[ init_multiply::x_2#3 init_multiply::x_2#2 init_multiply::x_2#1 ] -[ init_multiply::sqr#3 init_multiply::sqr#4 init_multiply::sqr#1 init_multiply::sqr#2 ] -[ init_multiply::x_255#2 init_multiply::x_255#1 ] -[ init_multiply::sqr2_lo#2 init_multiply::sqr2_lo#1 ] -[ init_multiply::sqr2_hi#2 init_multiply::sqr2_hi#1 ] -[ init_multiply::dir#2 init_multiply::dir#3 ] +[ mulf_init::c#2 mulf_init::c#1 ] +[ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] +[ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ] +[ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] +[ mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] +[ mulf_init::x_255#2 mulf_init::x_255#1 ] +[ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] +[ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] +[ mulf_init::dir#2 mulf_init::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 muls8s::a#0 to zero page equivalence class [ muls8s::a#0 ] +Added variable muls8s::b#0 to zero page equivalence class [ muls8s::b#0 ] +Added variable muls8s::return#2 to zero page equivalence class [ muls8s::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 mulf8s::a#0 to zero page equivalence class [ mulf8s::a#0 ] +Added variable mulf8s::b#0 to zero page equivalence class [ mulf8s::b#0 ] +Added variable mulf8s::return#2 to zero page equivalence class [ mulf8s::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 ] @@ -6187,25 +6183,25 @@ Added variable signed_multiply_error::ms#0 to zero page equivalence class [ sign 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::$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::$17 to zero page equivalence class [ signed_multiply::$17 ] -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 mulf8u::return#2 to zero page equivalence class [ mulf8u::return#2 ] +Added variable mulf8s::$6 to zero page equivalence class [ mulf8s::$6 ] +Added variable mulf8s::$16 to zero page equivalence class [ mulf8s::$16 ] +Added variable mulf8s::$12 to zero page equivalence class [ mulf8s::$12 ] +Added variable mulf8s::$17 to zero page equivalence class [ mulf8s::$17 ] +Added variable mulf8u::return#0 to zero page equivalence class [ mulf8u::return#0 ] +Added variable muls8u::a#0 to zero page equivalence class [ muls8u::a#0 ] +Added variable muls8u::b#0 to zero page equivalence class [ muls8u::b#0 ] +Added variable muls8u::return#2 to zero page equivalence class [ muls8u::return#2 ] Added variable multiply_results_compare::ms#0 to zero page equivalence class [ multiply_results_compare::ms#0 ] -Added variable multiply::return#3 to zero page equivalence class [ multiply::return#3 ] +Added variable mulf8u::return#3 to zero page equivalence class [ mulf8u::return#3 ] Added variable multiply_results_compare::ma#0 to zero page equivalence class [ multiply_results_compare::ma#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 ] +Added variable mulf_init::$2 to zero page equivalence class [ mulf_init::$2 ] +Added variable mulf_init::$5 to zero page equivalence class [ mulf_init::$5 ] +Added variable mulf_init::$6 to zero page equivalence class [ mulf_init::$6 ] Complete equivalence classes [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::a#1 ] [ signed_multiply_results_compare::b#2 signed_multiply_results_compare::b#1 ] @@ -6217,35 +6213,35 @@ Complete equivalence classes [ print_char::ch#4 print_char::ch#2 print_char::ch#3 ] [ char_cursor#78 char_cursor#129 char_cursor#128 char_cursor#124 char_cursor#141 char_cursor#30 char_cursor#123 char_cursor#17 char_cursor#122 char_cursor#176 char_cursor#180 char_cursor#1 char_cursor#126 char_cursor#201 ] [ 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#4 ] -[ multiply::b#2 multiply::b#1 multiply::b#4 ] -[ 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 ] +[ mulf8s::m#4 mulf8s::m#5 mulf8s::m#1 mulf8s::m#0 mulf8s::m#2 ] +[ mulf8u::a#2 mulf8u::a#3 mulf8u::a#1 ] +[ mulf8u::b#2 mulf8u::b#3 mulf8u::b#1 ] +[ muls8s::i#2 muls8s::i#1 ] +[ muls8s::m#5 muls8s::return#0 muls8s::m#3 muls8s::m#1 muls8s::m#2 ] +[ muls8s::j#2 muls8s::j#1 ] [ multiply_results_compare::a#6 multiply_results_compare::a#1 ] [ multiply_results_compare::b#2 multiply_results_compare::b#1 ] -[ slow_multiply::i#2 slow_multiply::i#1 ] -[ slow_multiply::return#0 slow_multiply::m#3 slow_multiply::m#1 ] +[ muls8u::i#2 muls8u::i#1 ] +[ muls8u::return#0 muls8u::m#3 muls8u::m#1 ] [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::kc_sqr#1 ] [ multiply_tables_compare::asm_sqr#2 multiply_tables_compare::asm_sqr#1 ] -[ init_multiply::c#2 init_multiply::c#1 ] -[ init_multiply::sqr1_lo#2 init_multiply::sqr1_lo#1 ] -[ init_multiply::sqr1_hi#2 init_multiply::sqr1_hi#1 ] -[ init_multiply::x_2#3 init_multiply::x_2#2 init_multiply::x_2#1 ] -[ init_multiply::sqr#3 init_multiply::sqr#4 init_multiply::sqr#1 init_multiply::sqr#2 ] -[ init_multiply::x_255#2 init_multiply::x_255#1 ] -[ init_multiply::sqr2_lo#2 init_multiply::sqr2_lo#1 ] -[ init_multiply::sqr2_hi#2 init_multiply::sqr2_hi#1 ] -[ init_multiply::dir#2 init_multiply::dir#3 ] +[ mulf_init::c#2 mulf_init::c#1 ] +[ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] +[ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ] +[ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] +[ mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] +[ mulf_init::x_255#2 mulf_init::x_255#1 ] +[ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] +[ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] +[ mulf_init::dir#2 mulf_init::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 ] +[ muls8s::a#0 ] +[ muls8s::b#0 ] +[ muls8s::return#2 ] [ signed_multiply_results_compare::ms#0 ] -[ signed_multiply::a#0 ] -[ signed_multiply::b#0 ] -[ signed_multiply::return#2 ] +[ mulf8s::a#0 ] +[ mulf8s::b#0 ] +[ mulf8s::return#2 ] [ signed_multiply_results_compare::ma#0 ] [ signed_multiply_error::a#0 ] [ signed_multiply_error::b#0 ] @@ -6253,25 +6249,25 @@ Complete equivalence classes [ signed_multiply_error::ma#0 ] [ print_byte::$0 ] [ print_byte::$2 ] -[ multiply::return#2 ] -[ signed_multiply::$6 ] -[ signed_multiply::$16 ] -[ signed_multiply::$12 ] -[ signed_multiply::$17 ] -[ multiply::return#0 ] -[ slow_multiply::a#0 ] -[ slow_multiply::b#0 ] -[ slow_multiply::return#2 ] +[ mulf8u::return#2 ] +[ mulf8s::$6 ] +[ mulf8s::$16 ] +[ mulf8s::$12 ] +[ mulf8s::$17 ] +[ mulf8u::return#0 ] +[ muls8u::a#0 ] +[ muls8u::b#0 ] +[ muls8u::return#2 ] [ multiply_results_compare::ms#0 ] -[ multiply::return#3 ] +[ mulf8u::return#3 ] [ multiply_results_compare::ma#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 ] +[ mulf_init::$2 ] +[ mulf_init::$5 ] +[ mulf_init::$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#23 line_cursor#45 line_cursor#10 line_cursor#1 ] @@ -6282,35 +6278,35 @@ Allocated zp ZP_BYTE:12 [ print_byte::b#5 print_byte::b#3 print_byte::b#4 print_ Allocated zp ZP_BYTE:13 [ print_char::ch#4 print_char::ch#2 print_char::ch#3 ] Allocated zp ZP_WORD:14 [ char_cursor#78 char_cursor#129 char_cursor#128 char_cursor#124 char_cursor#141 char_cursor#30 char_cursor#123 char_cursor#17 char_cursor#122 char_cursor#176 char_cursor#180 char_cursor#1 char_cursor#126 char_cursor#201 ] 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#4 ] -Allocated zp ZP_BYTE:20 [ multiply::b#2 multiply::b#1 multiply::b#4 ] -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_WORD:17 [ mulf8s::m#4 mulf8s::m#5 mulf8s::m#1 mulf8s::m#0 mulf8s::m#2 ] +Allocated zp ZP_BYTE:19 [ mulf8u::a#2 mulf8u::a#3 mulf8u::a#1 ] +Allocated zp ZP_BYTE:20 [ mulf8u::b#2 mulf8u::b#3 mulf8u::b#1 ] +Allocated zp ZP_BYTE:21 [ muls8s::i#2 muls8s::i#1 ] +Allocated zp ZP_WORD:22 [ muls8s::m#5 muls8s::return#0 muls8s::m#3 muls8s::m#1 muls8s::m#2 ] +Allocated zp ZP_BYTE:24 [ muls8s::j#2 muls8s::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_BYTE:27 [ muls8u::i#2 muls8u::i#1 ] +Allocated zp ZP_WORD:28 [ muls8u::return#0 muls8u::m#3 muls8u::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_BYTE:34 [ mulf_init::c#2 mulf_init::c#1 ] +Allocated zp ZP_WORD:35 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] +Allocated zp ZP_WORD:37 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ] +Allocated zp ZP_BYTE:39 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] +Allocated zp ZP_WORD:40 [ mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] +Allocated zp ZP_BYTE:42 [ mulf_init::x_255#2 mulf_init::x_255#1 ] +Allocated zp ZP_WORD:43 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] +Allocated zp ZP_WORD:45 [ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] +Allocated zp ZP_BYTE:47 [ mulf_init::dir#2 mulf_init::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_BYTE:50 [ muls8s::a#0 ] +Allocated zp ZP_BYTE:51 [ muls8s::b#0 ] +Allocated zp ZP_WORD:52 [ muls8s::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_BYTE:56 [ mulf8s::a#0 ] +Allocated zp ZP_BYTE:57 [ mulf8s::b#0 ] +Allocated zp ZP_WORD:58 [ mulf8s::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 ] @@ -6318,25 +6314,25 @@ 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::$16 ] -Allocated zp ZP_BYTE:74 [ signed_multiply::$12 ] -Allocated zp ZP_BYTE:75 [ signed_multiply::$17 ] -Allocated zp ZP_WORD:76 [ multiply::return#0 ] -Allocated zp ZP_BYTE:78 [ slow_multiply::a#0 ] -Allocated zp ZP_BYTE:79 [ slow_multiply::b#0 ] -Allocated zp ZP_WORD:80 [ slow_multiply::return#2 ] +Allocated zp ZP_WORD:70 [ mulf8u::return#2 ] +Allocated zp ZP_BYTE:72 [ mulf8s::$6 ] +Allocated zp ZP_BYTE:73 [ mulf8s::$16 ] +Allocated zp ZP_BYTE:74 [ mulf8s::$12 ] +Allocated zp ZP_BYTE:75 [ mulf8s::$17 ] +Allocated zp ZP_WORD:76 [ mulf8u::return#0 ] +Allocated zp ZP_BYTE:78 [ muls8u::a#0 ] +Allocated zp ZP_BYTE:79 [ muls8u::b#0 ] +Allocated zp ZP_WORD:80 [ muls8u::return#2 ] Allocated zp ZP_WORD:82 [ multiply_results_compare::ms#0 ] -Allocated zp ZP_WORD:84 [ multiply::return#3 ] +Allocated zp ZP_WORD:84 [ mulf8u::return#3 ] Allocated zp ZP_WORD:86 [ multiply_results_compare::ma#0 ] Allocated zp ZP_BYTE:88 [ multiply_error::a#0 ] Allocated zp ZP_BYTE:89 [ multiply_error::b#0 ] Allocated zp ZP_WORD:90 [ multiply_error::ms#0 ] Allocated zp ZP_WORD:92 [ multiply_error::ma#0 ] -Allocated zp ZP_BYTE:94 [ init_multiply::$2 ] -Allocated zp ZP_BYTE:95 [ init_multiply::$5 ] -Allocated zp ZP_BYTE:96 [ init_multiply::$6 ] +Allocated zp ZP_BYTE:94 [ mulf_init::$2 ] +Allocated zp ZP_BYTE:95 [ mulf_init::$5 ] +Allocated zp ZP_BYTE:96 [ mulf_init::$6 ] INITIAL ASM //SEG0 Basic Upstart @@ -6376,17 +6372,17 @@ main: { jmp b1 //SEG13 main::@1 b1: - //SEG14 [7] call init_multiply param-assignment [ ] ( main:2 [ ] ) - //SEG15 [229] phi from main::@1 to init_multiply [phi:main::@1->init_multiply] - init_multiply_from_b1: - jsr init_multiply + //SEG14 [7] call mulf_init param-assignment [ ] ( main:2 [ ] ) + //SEG15 [229] phi from main::@1 to mulf_init [phi:main::@1->mulf_init] + mulf_init_from_b1: + jsr mulf_init //SEG16 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: jmp b2 //SEG17 main::@2 b2: - //SEG18 [9] call init_multiply_asm param-assignment [ ] ( main:2 [ ] ) - jsr init_multiply_asm + //SEG18 [9] call mulf_init_asm param-assignment [ ] ( main:2 [ ] ) + jsr mulf_init_asm //SEG19 [10] phi from main::@2 to main::@3 [phi:main::@2->main::@3] b3_from_b2: jmp b3 @@ -6450,47 +6446,47 @@ signed_multiply_results_compare: { jmp b2 //SEG43 signed_multiply_results_compare::@2 b2: - //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 + //SEG44 [20] (signed byte) muls8s::a#0 ← (signed byte) signed_multiply_results_compare::a#6 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 muls8s::a#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 muls8s::a#0 line_cursor#1 ] ) -- vbsz1=vbsz2 lda a - 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 + sta muls8s.a + //SEG45 [21] (signed byte) muls8s::b#0 ← (signed byte) signed_multiply_results_compare::b#2 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 muls8s::a#0 muls8s::b#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 muls8s::a#0 muls8s::b#0 line_cursor#1 ] ) -- vbsz1=vbsz2 lda b - 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 + sta muls8s.b + //SEG46 [22] call muls8s param-assignment [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 muls8s::return#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 muls8s::return#0 line_cursor#1 ] ) + jsr muls8s + //SEG47 [23] (signed word) muls8s::return#2 ← (signed word) muls8s::return#0 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 muls8s::return#2 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 muls8s::return#2 line_cursor#1 ] ) -- vwsz1=vwsz2 + lda muls8s.return + sta muls8s.return_2 + lda muls8s.return+1 + sta muls8s.return_2+1 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_2 + //SEG49 [24] (signed word) signed_multiply_results_compare::ms#0 ← (signed word) muls8s::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 muls8s.return_2 sta ms - lda slow_signed_multiply.return_2+1 + lda muls8s.return_2+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 ] ) -- vbsz1=vbsz2 + //SEG50 [25] (signed byte) mulf8s::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 mulf8s::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 mulf8s::a#0 line_cursor#1 ] ) -- vbsz1=vbsz2 lda a - 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 + sta mulf8s.a + //SEG51 [26] (signed byte) mulf8s::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 mulf8s::a#0 mulf8s::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 mulf8s::a#0 mulf8s::b#0 line_cursor#1 ] ) -- vbsz1=vbsz2 lda b - 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::m#4 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::m#4 line_cursor#1 ] ) - jsr signed_multiply - //SEG53 [28] (signed word) signed_multiply::return#2 ← (signed word)(word) signed_multiply::m#4 [ 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.m - sta signed_multiply.return - lda signed_multiply.m+1 - sta signed_multiply.return+1 + sta mulf8s.b + //SEG52 [27] call mulf8s param-assignment [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 mulf8s::m#4 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 mulf8s::m#4 line_cursor#1 ] ) + jsr mulf8s + //SEG53 [28] (signed word) mulf8s::return#2 ← (signed word)(word) mulf8s::m#4 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 mulf8s::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 mulf8s::return#2 line_cursor#1 ] ) -- vwsz1=vwsz2 + lda mulf8s.m + sta mulf8s.return + lda mulf8s.m+1 + sta mulf8s.return+1 jmp b9 //SEG54 signed_multiply_results_compare::@9 b9: - //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 + //SEG55 [29] (signed word) signed_multiply_results_compare::ma#0 ← (signed word) mulf8s::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 mulf8s.return sta ma - lda signed_multiply.return+1 + lda mulf8s.return+1 sta ma+1 //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 @@ -6988,8 +6984,8 @@ print_sbyte: { //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: { +//SEG233 mulf8s +mulf8s: { .label _6 = $48 .label _12 = $4a .label _16 = $49 @@ -6998,89 +6994,89 @@ signed_multiply: { .label a = $38 .label b = $39 .label return = $3a - //SEG234 [113] (byte~) multiply::a#4 ← (byte)(signed byte) signed_multiply::a#0 [ signed_multiply::a#0 signed_multiply::b#0 multiply::a#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::a#0 signed_multiply::b#0 multiply::a#4 ] ) -- vbuz1=vbuz2 + //SEG234 [113] (byte~) mulf8u::a#3 ← (byte)(signed byte) mulf8s::a#0 [ mulf8s::a#0 mulf8s::b#0 mulf8u::a#3 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::a#0 mulf8s::b#0 mulf8u::a#3 ] ) -- vbuz1=vbuz2 lda a - sta multiply.a - //SEG235 [114] (byte~) multiply::b#4 ← (byte)(signed byte) signed_multiply::b#0 [ signed_multiply::a#0 signed_multiply::b#0 multiply::a#4 multiply::b#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::a#0 signed_multiply::b#0 multiply::a#4 multiply::b#4 ] ) -- vbuz1=vbuz2 + sta mulf8u.a + //SEG235 [114] (byte~) mulf8u::b#3 ← (byte)(signed byte) mulf8s::b#0 [ mulf8s::a#0 mulf8s::b#0 mulf8u::a#3 mulf8u::b#3 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::a#0 mulf8s::b#0 mulf8u::a#3 mulf8u::b#3 ] ) -- vbuz1=vbuz2 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 [129] phi from signed_multiply to multiply [phi:signed_multiply->multiply] - multiply_from_signed_multiply: - //SEG238 [129] phi (byte) multiply::b#2 = (byte~) multiply::b#4 [phi:signed_multiply->multiply#0] -- register_copy - //SEG239 [129] phi (byte) multiply::a#2 = (byte~) multiply::a#4 [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 + sta mulf8u.b + //SEG236 [115] call mulf8u param-assignment [ mulf8s::a#0 mulf8s::b#0 mulf8u::return#0 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::a#0 mulf8s::b#0 mulf8u::return#0 ] ) + //SEG237 [129] phi from mulf8s to mulf8u [phi:mulf8s->mulf8u] + mulf8u_from_mulf8s: + //SEG238 [129] phi (byte) mulf8u::b#2 = (byte~) mulf8u::b#3 [phi:mulf8s->mulf8u#0] -- register_copy + //SEG239 [129] phi (byte) mulf8u::a#2 = (byte~) mulf8u::a#3 [phi:mulf8s->mulf8u#1] -- register_copy + jsr mulf8u + //SEG240 [116] (word) mulf8u::return#2 ← (word) mulf8u::return#0 [ mulf8s::a#0 mulf8s::b#0 mulf8u::return#2 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::a#0 mulf8s::b#0 mulf8u::return#2 ] ) -- vwuz1=vwuz2 + lda mulf8u.return + sta mulf8u.return_2 + lda mulf8u.return+1 + sta mulf8u.return_2+1 jmp b6 - //SEG241 signed_multiply::@6 + //SEG241 mulf8s::@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 + //SEG242 [117] (word) mulf8s::m#0 ← (word) mulf8u::return#2 [ mulf8s::a#0 mulf8s::b#0 mulf8s::m#0 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::a#0 mulf8s::b#0 mulf8s::m#0 ] ) -- vwuz1=vwuz2 + lda mulf8u.return_2 sta m - lda multiply.return_2+1 + lda mulf8u.return_2+1 sta m+1 - //SEG243 [118] if((signed byte) signed_multiply::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 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 + //SEG243 [118] if((signed byte) mulf8s::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s::@1 [ mulf8s::a#0 mulf8s::b#0 mulf8s::m#0 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::a#0 mulf8s::b#0 mulf8s::m#0 ] ) -- vbsz1_ge_0_then_la1 lda a cmp #0 bpl b1_from_b6 jmp b3 - //SEG244 signed_multiply::@3 + //SEG244 mulf8s::@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 + //SEG245 [119] (byte~) mulf8s::$6 ← > (word) mulf8s::m#0 [ mulf8s::a#0 mulf8s::b#0 mulf8s::m#0 mulf8s::$6 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::a#0 mulf8s::b#0 mulf8s::m#0 mulf8s::$6 ] ) -- vbuz1=_hi_vwuz2 lda m+1 sta _6 - //SEG246 [120] (byte/signed byte/word/signed word/dword/signed dword~) signed_multiply::$16 ← (byte~) signed_multiply::$6 - (byte)(signed byte) signed_multiply::b#0 [ 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 + //SEG246 [120] (byte/signed byte/word/signed word/dword/signed dword~) mulf8s::$16 ← (byte~) mulf8s::$6 - (byte)(signed byte) mulf8s::b#0 [ mulf8s::a#0 mulf8s::b#0 mulf8s::m#0 mulf8s::$16 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::a#0 mulf8s::b#0 mulf8s::m#0 mulf8s::$16 ] ) -- vbuz1=vbuz2_minus_vbuz3 lda _6 sec sbc b sta _16 - //SEG247 [121] (word) signed_multiply::m#1 ← (word) signed_multiply::m#0 hi= (byte/signed byte/word/signed word/dword/signed dword~) 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 + //SEG247 [121] (word) mulf8s::m#1 ← (word) mulf8s::m#0 hi= (byte/signed byte/word/signed word/dword/signed dword~) mulf8s::$16 [ mulf8s::a#0 mulf8s::b#0 mulf8s::m#1 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::a#0 mulf8s::b#0 mulf8s::m#1 ] ) -- vwuz1=vwuz1_sethi_vbuz2 lda _16 sta m+1 - //SEG248 [122] phi from signed_multiply::@3 signed_multiply::@6 to signed_multiply::@1 [phi:signed_multiply::@3/signed_multiply::@6->signed_multiply::@1] + //SEG248 [122] phi from mulf8s::@3 mulf8s::@6 to mulf8s::@1 [phi:mulf8s::@3/mulf8s::@6->mulf8s::@1] b1_from_b3: b1_from_b6: - //SEG249 [122] phi (word) signed_multiply::m#5 = (word) signed_multiply::m#1 [phi:signed_multiply::@3/signed_multiply::@6->signed_multiply::@1#0] -- register_copy + //SEG249 [122] phi (word) mulf8s::m#5 = (word) mulf8s::m#1 [phi:mulf8s::@3/mulf8s::@6->mulf8s::@1#0] -- register_copy jmp b1 - //SEG250 signed_multiply::@1 + //SEG250 mulf8s::@1 b1: - //SEG251 [123] if((signed byte) signed_multiply::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 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 + //SEG251 [123] if((signed byte) mulf8s::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s::@2 [ mulf8s::a#0 mulf8s::m#5 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::a#0 mulf8s::m#5 ] ) -- vbsz1_ge_0_then_la1 lda b cmp #0 bpl b2_from_b1 jmp b4 - //SEG252 signed_multiply::@4 + //SEG252 mulf8s::@4 b4: - //SEG253 [124] (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 + //SEG253 [124] (byte~) mulf8s::$12 ← > (word) mulf8s::m#5 [ mulf8s::a#0 mulf8s::m#5 mulf8s::$12 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::a#0 mulf8s::m#5 mulf8s::$12 ] ) -- vbuz1=_hi_vwuz2 lda m+1 sta _12 - //SEG254 [125] (byte/signed byte/word/signed word/dword/signed dword~) signed_multiply::$17 ← (byte~) signed_multiply::$12 - (byte)(signed byte) signed_multiply::a#0 [ 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 + //SEG254 [125] (byte/signed byte/word/signed word/dword/signed dword~) mulf8s::$17 ← (byte~) mulf8s::$12 - (byte)(signed byte) mulf8s::a#0 [ mulf8s::m#5 mulf8s::$17 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::m#5 mulf8s::$17 ] ) -- vbuz1=vbuz2_minus_vbuz3 lda _12 sec sbc a sta _17 - //SEG255 [126] (word) signed_multiply::m#2 ← (word) signed_multiply::m#5 hi= (byte/signed byte/word/signed word/dword/signed dword~) 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 + //SEG255 [126] (word) mulf8s::m#2 ← (word) mulf8s::m#5 hi= (byte/signed byte/word/signed word/dword/signed dword~) mulf8s::$17 [ mulf8s::m#2 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::m#2 ] ) -- vwuz1=vwuz1_sethi_vbuz2 lda _17 sta m+1 - //SEG256 [127] phi from signed_multiply::@1 signed_multiply::@4 to signed_multiply::@2 [phi:signed_multiply::@1/signed_multiply::@4->signed_multiply::@2] + //SEG256 [127] phi from mulf8s::@1 mulf8s::@4 to mulf8s::@2 [phi:mulf8s::@1/mulf8s::@4->mulf8s::@2] b2_from_b1: b2_from_b4: - //SEG257 [127] phi (word) signed_multiply::m#4 = (word) signed_multiply::m#5 [phi:signed_multiply::@1/signed_multiply::@4->signed_multiply::@2#0] -- register_copy + //SEG257 [127] phi (word) mulf8s::m#4 = (word) mulf8s::m#5 [phi:mulf8s::@1/mulf8s::@4->mulf8s::@2#0] -- register_copy jmp b2 - //SEG258 signed_multiply::@2 + //SEG258 mulf8s::@2 b2: jmp breturn - //SEG259 signed_multiply::@return + //SEG259 mulf8s::@return breturn: - //SEG260 [128] return [ 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 ] ) + //SEG260 [128] return [ mulf8s::m#4 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::m#4 ] ) rts } -//SEG261 multiply -multiply: { +//SEG261 mulf8u +mulf8u: { .label memA = $fe .label memB = $ff .label return = $4c @@ -7088,13 +7084,13 @@ multiply: { .label a = $13 .label b = $14 .label return_3 = $54 - //SEG262 [130] *((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:157 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply::b#2 ] ) -- _deref_pbuc1=vbuz1 + //SEG262 [130] *((const byte*) mulf8u::memA#0) ← (byte) mulf8u::a#2 [ mulf8u::b#2 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27::mulf8u:115 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::a#0 mulf8s::b#0 mulf8u::b#2 ] main:2::multiply_results_compare:13::mulf8u:157 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 mulf8u::b#2 ] ) -- _deref_pbuc1=vbuz1 lda a sta memA - //SEG263 [131] *((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:157 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ) -- _deref_pbuc1=vbuz1 + //SEG263 [131] *((const byte*) mulf8u::memB#0) ← (byte) mulf8u::b#2 [ ] ( main:2::signed_multiply_results_compare:15::mulf8s:27::mulf8u:115 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::a#0 mulf8s::b#0 ] main:2::multiply_results_compare:13::mulf8u:157 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ) -- _deref_pbuc1=vbuz1 lda b sta memB - //SEG264 asm { ldamemA stasm1+1 stasm3+1 eor#$ff stasm2+1 stasm4+1 ldxmemB sec sm1: ldamul_sqr1_lo,x sm2: sbcmul_sqr2_lo,x stamemA sm3: ldamul_sqr1_hi,x sm4: sbcmul_sqr2_hi,x stamemB } + //SEG264 asm { ldamemA stasm1+1 stasm3+1 eor#$ff stasm2+1 stasm4+1 ldxmemB sec sm1: ldamulf_sqr1_lo,x sm2: sbcmulf_sqr2_lo,x stamemA sm3: ldamulf_sqr1_hi,x sm4: sbcmulf_sqr2_hi,x stamemB } lda memA sta sm1+1 sta sm3+1 @@ -7104,28 +7100,28 @@ multiply: { ldx memB sec sm1: - lda mul_sqr1_lo,x + lda mulf_sqr1_lo,x sm2: - sbc mul_sqr2_lo,x + sbc mulf_sqr2_lo,x sta memA sm3: - lda mul_sqr1_hi,x + lda mulf_sqr1_hi,x sm4: - sbc mul_sqr2_hi,x + sbc mulf_sqr2_hi,x sta memB - //SEG265 [133] (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:157 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply::return#0 ] ) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 + //SEG265 [133] (word) mulf8u::return#0 ← *((const byte*) mulf8u::memB#0) w= *((const byte*) mulf8u::memA#0) [ mulf8u::return#0 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27::mulf8u:115 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::a#0 mulf8s::b#0 mulf8u::return#0 ] main:2::multiply_results_compare:13::mulf8u:157 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 mulf8u::return#0 ] ) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 lda memA sta return lda memB sta return+1 jmp breturn - //SEG266 multiply::@return + //SEG266 mulf8u::@return breturn: - //SEG267 [134] 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:157 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply::return#0 ] ) + //SEG267 [134] return [ mulf8u::return#0 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27::mulf8u:115 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::a#0 mulf8s::b#0 mulf8u::return#0 ] main:2::multiply_results_compare:13::mulf8u:157 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 mulf8u::return#0 ] ) rts } -//SEG268 slow_signed_multiply -slow_signed_multiply: { +//SEG268 muls8s +muls8s: { .label m = $16 .label i = $15 .label return = $16 @@ -7133,29 +7129,29 @@ slow_signed_multiply: { .label a = $32 .label b = $33 .label return_2 = $34 - //SEG269 [135] if((signed byte) slow_signed_multiply::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 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 + //SEG269 [135] if((signed byte) muls8s::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls8s::@1 [ muls8s::a#0 muls8s::b#0 ] ( main:2::signed_multiply_results_compare:15::muls8s:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 muls8s::a#0 muls8s::b#0 ] ) -- vbsz1_ge_0_then_la1 lda a cmp #0 bpl b1 - //SEG270 [136] phi from slow_signed_multiply to slow_signed_multiply::@2 [phi:slow_signed_multiply->slow_signed_multiply::@2] - b2_from_slow_signed_multiply: - //SEG271 [136] phi (signed byte) slow_signed_multiply::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:slow_signed_multiply->slow_signed_multiply::@2#0] -- vbsz1=vbuc1 + //SEG270 [136] phi from muls8s to muls8s::@2 [phi:muls8s->muls8s::@2] + b2_from_muls8s: + //SEG271 [136] phi (signed byte) muls8s::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8s->muls8s::@2#0] -- vbsz1=vbuc1 lda #0 sta i - //SEG272 [136] phi (signed word) slow_signed_multiply::m#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:slow_signed_multiply->slow_signed_multiply::@2#1] -- vwsz1=vbuc1 + //SEG272 [136] phi (signed word) muls8s::m#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8s->muls8s::@2#1] -- vwsz1=vbuc1 lda #0 sta m lda #0 sta m+1 jmp b2 - //SEG273 [136] phi from slow_signed_multiply::@2 to slow_signed_multiply::@2 [phi:slow_signed_multiply::@2->slow_signed_multiply::@2] + //SEG273 [136] phi from muls8s::@2 to muls8s::@2 [phi:muls8s::@2->muls8s::@2] b2_from_b2: - //SEG274 [136] 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 - //SEG275 [136] 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 + //SEG274 [136] phi (signed byte) muls8s::i#2 = (signed byte) muls8s::i#1 [phi:muls8s::@2->muls8s::@2#0] -- register_copy + //SEG275 [136] phi (signed word) muls8s::m#3 = (signed word) muls8s::m#1 [phi:muls8s::@2->muls8s::@2#1] -- register_copy jmp b2 - //SEG276 slow_signed_multiply::@2 + //SEG276 muls8s::@2 b2: - //SEG277 [137] (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 + //SEG277 [137] (signed word) muls8s::m#1 ← (signed word) muls8s::m#3 - (signed byte) muls8s::b#0 [ muls8s::a#0 muls8s::b#0 muls8s::i#2 muls8s::m#1 ] ( main:2::signed_multiply_results_compare:15::muls8s:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 muls8s::a#0 muls8s::b#0 muls8s::i#2 muls8s::m#1 ] ) -- vwsz1=vwsz1_minus_vbsz2 lda b sta $fe ora #$7f @@ -7170,57 +7166,57 @@ slow_signed_multiply: { lda m+1 sbc $ff sta m+1 - //SEG278 [138] (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 + //SEG278 [138] (signed byte) muls8s::i#1 ← -- (signed byte) muls8s::i#2 [ muls8s::a#0 muls8s::b#0 muls8s::m#1 muls8s::i#1 ] ( main:2::signed_multiply_results_compare:15::muls8s:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 muls8s::a#0 muls8s::b#0 muls8s::m#1 muls8s::i#1 ] ) -- vbsz1=_dec_vbsz1 dec i - //SEG279 [139] 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 + //SEG279 [139] if((signed byte) muls8s::i#1!=(signed byte) muls8s::a#0) goto muls8s::@2 [ muls8s::a#0 muls8s::b#0 muls8s::m#1 muls8s::i#1 ] ( main:2::signed_multiply_results_compare:15::muls8s:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 muls8s::a#0 muls8s::b#0 muls8s::m#1 muls8s::i#1 ] ) -- vbsz1_neq_vbsz2_then_la1 lda i cmp a bne b2_from_b2 - //SEG280 [140] 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] + //SEG280 [140] phi from muls8s::@2 muls8s::@5 to muls8s::@3 [phi:muls8s::@2/muls8s::@5->muls8s::@3] b3_from_b2: b3_from_b5: - //SEG281 [140] 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 + //SEG281 [140] phi (signed word) muls8s::return#0 = (signed word) muls8s::m#1 [phi:muls8s::@2/muls8s::@5->muls8s::@3#0] -- register_copy jmp b3 - //SEG282 [140] phi from slow_signed_multiply::@1 to slow_signed_multiply::@3 [phi:slow_signed_multiply::@1->slow_signed_multiply::@3] + //SEG282 [140] phi from muls8s::@1 to muls8s::@3 [phi:muls8s::@1->muls8s::@3] b3_from_b1: - //SEG283 [140] phi (signed word) slow_signed_multiply::return#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:slow_signed_multiply::@1->slow_signed_multiply::@3#0] -- vwsz1=vbuc1 + //SEG283 [140] phi (signed word) muls8s::return#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8s::@1->muls8s::@3#0] -- vwsz1=vbuc1 lda #0 sta return lda #0 sta return+1 jmp b3 - //SEG284 slow_signed_multiply::@3 + //SEG284 muls8s::@3 b3: jmp breturn - //SEG285 slow_signed_multiply::@return + //SEG285 muls8s::@return breturn: - //SEG286 [141] 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 ] ) + //SEG286 [141] return [ muls8s::return#0 ] ( main:2::signed_multiply_results_compare:15::muls8s:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 muls8s::return#0 ] ) rts - //SEG287 slow_signed_multiply::@1 + //SEG287 muls8s::@1 b1: - //SEG288 [142] if((signed byte) slow_signed_multiply::a#0<=(byte/signed byte/word/signed word/dword/signed dword) 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 + //SEG288 [142] if((signed byte) muls8s::a#0<=(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls8s::@3 [ muls8s::a#0 muls8s::b#0 ] ( main:2::signed_multiply_results_compare:15::muls8s:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 muls8s::a#0 muls8s::b#0 ] ) -- vbsz1_le_0_then_la1 lda a cmp #1 bmi b3_from_b1 - //SEG289 [143] phi from slow_signed_multiply::@1 to slow_signed_multiply::@5 [phi:slow_signed_multiply::@1->slow_signed_multiply::@5] + //SEG289 [143] phi from muls8s::@1 to muls8s::@5 [phi:muls8s::@1->muls8s::@5] b5_from_b1: - //SEG290 [143] phi (signed byte) slow_signed_multiply::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:slow_signed_multiply::@1->slow_signed_multiply::@5#0] -- vbsz1=vbuc1 + //SEG290 [143] phi (signed byte) muls8s::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8s::@1->muls8s::@5#0] -- vbsz1=vbuc1 lda #0 sta j - //SEG291 [143] phi (signed word) slow_signed_multiply::m#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:slow_signed_multiply::@1->slow_signed_multiply::@5#1] -- vwsz1=vbuc1 + //SEG291 [143] phi (signed word) muls8s::m#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8s::@1->muls8s::@5#1] -- vwsz1=vbuc1 lda #0 sta m lda #0 sta m+1 jmp b5 - //SEG292 [143] phi from slow_signed_multiply::@5 to slow_signed_multiply::@5 [phi:slow_signed_multiply::@5->slow_signed_multiply::@5] + //SEG292 [143] phi from muls8s::@5 to muls8s::@5 [phi:muls8s::@5->muls8s::@5] b5_from_b5: - //SEG293 [143] 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 - //SEG294 [143] 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 + //SEG293 [143] phi (signed byte) muls8s::j#2 = (signed byte) muls8s::j#1 [phi:muls8s::@5->muls8s::@5#0] -- register_copy + //SEG294 [143] phi (signed word) muls8s::m#5 = (signed word) muls8s::m#2 [phi:muls8s::@5->muls8s::@5#1] -- register_copy jmp b5 - //SEG295 slow_signed_multiply::@5 + //SEG295 muls8s::@5 b5: - //SEG296 [144] (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 + //SEG296 [144] (signed word) muls8s::m#2 ← (signed word) muls8s::m#5 + (signed byte) muls8s::b#0 [ muls8s::a#0 muls8s::b#0 muls8s::m#2 muls8s::j#2 ] ( main:2::signed_multiply_results_compare:15::muls8s:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 muls8s::a#0 muls8s::b#0 muls8s::m#2 muls8s::j#2 ] ) -- vwsz1=vwsz1_plus_vbsz2 lda b sta $fe ora #$7f @@ -7235,9 +7231,9 @@ slow_signed_multiply: { lda m+1 adc $ff sta m+1 - //SEG297 [145] (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 + //SEG297 [145] (signed byte) muls8s::j#1 ← ++ (signed byte) muls8s::j#2 [ muls8s::a#0 muls8s::b#0 muls8s::m#2 muls8s::j#1 ] ( main:2::signed_multiply_results_compare:15::muls8s:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 muls8s::a#0 muls8s::b#0 muls8s::m#2 muls8s::j#1 ] ) -- vbsz1=_inc_vbsz1 inc j - //SEG298 [146] 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 + //SEG298 [146] if((signed byte) muls8s::j#1!=(signed byte) muls8s::a#0) goto muls8s::@5 [ muls8s::a#0 muls8s::b#0 muls8s::m#2 muls8s::j#1 ] ( main:2::signed_multiply_results_compare:15::muls8s:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 muls8s::a#0 muls8s::b#0 muls8s::m#2 muls8s::j#1 ] ) -- vbsz1_neq_vbsz2_then_la1 lda j cmp a bne b5_from_b5 @@ -7273,51 +7269,51 @@ multiply_results_compare: { jmp b2 //SEG309 multiply_results_compare::@2 b2: - //SEG310 [150] (byte) slow_multiply::a#0 ← (byte) multiply_results_compare::a#6 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::a#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::a#0 ] ) -- vbuz1=vbuz2 + //SEG310 [150] (byte) muls8u::a#0 ← (byte) multiply_results_compare::a#6 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 muls8u::a#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 muls8u::a#0 ] ) -- vbuz1=vbuz2 lda a - sta slow_multiply.a - //SEG311 [151] (byte) slow_multiply::b#0 ← (byte) multiply_results_compare::b#2 [ line_cursor#10 char_cursor#30 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#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::a#0 slow_multiply::b#0 ] ) -- vbuz1=vbuz2 + sta muls8u.a + //SEG311 [151] (byte) muls8u::b#0 ← (byte) multiply_results_compare::b#2 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 muls8u::a#0 muls8u::b#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 muls8u::a#0 muls8u::b#0 ] ) -- vbuz1=vbuz2 lda b - sta slow_multiply.b - //SEG312 [152] call slow_multiply param-assignment [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::return#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::return#0 ] ) - jsr slow_multiply - //SEG313 [153] (word) slow_multiply::return#2 ← (word) slow_multiply::return#0 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::return#2 ] ( main:2::multiply_results_compare:13 [ line_cursor#10 char_cursor#30 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 + sta muls8u.b + //SEG312 [152] call muls8u param-assignment [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 muls8u::return#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 muls8u::return#0 ] ) + jsr muls8u + //SEG313 [153] (word) muls8u::return#2 ← (word) muls8u::return#0 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 muls8u::return#2 ] ( main:2::multiply_results_compare:13 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 muls8u::return#2 ] ) -- vwuz1=vwuz2 + lda muls8u.return + sta muls8u.return_2 + lda muls8u.return+1 + sta muls8u.return_2+1 jmp b8 //SEG314 multiply_results_compare::@8 b8: - //SEG315 [154] (word) multiply_results_compare::ms#0 ← (word) slow_multiply::return#2 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ) -- vwuz1=vwuz2 - lda slow_multiply.return_2 + //SEG315 [154] (word) multiply_results_compare::ms#0 ← (word) muls8u::return#2 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ) -- vwuz1=vwuz2 + lda muls8u.return_2 sta ms - lda slow_multiply.return_2+1 + lda muls8u.return_2+1 sta ms+1 - //SEG316 [155] (byte) multiply::a#1 ← (byte) multiply_results_compare::a#6 [ line_cursor#10 char_cursor#30 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#10 char_cursor#30 multiply::a#1 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ) -- vbuz1=vbuz2 + //SEG316 [155] (byte) mulf8u::a#1 ← (byte) multiply_results_compare::a#6 [ line_cursor#10 char_cursor#30 mulf8u::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#10 char_cursor#30 mulf8u::a#1 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ) -- vbuz1=vbuz2 lda a - sta multiply.a - //SEG317 [156] (byte) multiply::b#1 ← (byte) multiply_results_compare::b#2 [ line_cursor#10 char_cursor#30 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#10 char_cursor#30 multiply::a#1 multiply::b#1 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ) -- vbuz1=vbuz2 + sta mulf8u.a + //SEG317 [156] (byte) mulf8u::b#1 ← (byte) multiply_results_compare::b#2 [ line_cursor#10 char_cursor#30 mulf8u::a#1 mulf8u::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#10 char_cursor#30 mulf8u::a#1 mulf8u::b#1 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ) -- vbuz1=vbuz2 lda b - sta multiply.b - //SEG318 [157] call multiply param-assignment [ line_cursor#10 char_cursor#30 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#10 char_cursor#30 multiply::return#0 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ) - //SEG319 [129] phi from multiply_results_compare::@8 to multiply [phi:multiply_results_compare::@8->multiply] - multiply_from_b8: - //SEG320 [129] phi (byte) multiply::b#2 = (byte) multiply::b#1 [phi:multiply_results_compare::@8->multiply#0] -- register_copy - //SEG321 [129] phi (byte) multiply::a#2 = (byte) multiply::a#1 [phi:multiply_results_compare::@8->multiply#1] -- register_copy - jsr multiply - //SEG322 [158] (word) multiply::return#3 ← (word) multiply::return#0 [ line_cursor#10 char_cursor#30 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#10 char_cursor#30 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 + sta mulf8u.b + //SEG318 [157] call mulf8u param-assignment [ line_cursor#10 char_cursor#30 mulf8u::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#10 char_cursor#30 mulf8u::return#0 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ) + //SEG319 [129] phi from multiply_results_compare::@8 to mulf8u [phi:multiply_results_compare::@8->mulf8u] + mulf8u_from_b8: + //SEG320 [129] phi (byte) mulf8u::b#2 = (byte) mulf8u::b#1 [phi:multiply_results_compare::@8->mulf8u#0] -- register_copy + //SEG321 [129] phi (byte) mulf8u::a#2 = (byte) mulf8u::a#1 [phi:multiply_results_compare::@8->mulf8u#1] -- register_copy + jsr mulf8u + //SEG322 [158] (word) mulf8u::return#3 ← (word) mulf8u::return#0 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 mulf8u::return#3 ] ( main:2::multiply_results_compare:13 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 mulf8u::return#3 ] ) -- vwuz1=vwuz2 + lda mulf8u.return + sta mulf8u.return_3 + lda mulf8u.return+1 + sta mulf8u.return_3+1 jmp b9 //SEG323 multiply_results_compare::@9 b9: - //SEG324 [159] (word) multiply_results_compare::ma#0 ← (word) multiply::return#3 [ line_cursor#10 char_cursor#30 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#10 char_cursor#30 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 + //SEG324 [159] (word) multiply_results_compare::ma#0 ← (word) mulf8u::return#3 [ line_cursor#10 char_cursor#30 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#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply_results_compare::ma#0 ] ) -- vwuz1=vwuz2 + lda mulf8u.return_3 sta ma - lda multiply.return_3+1 + lda mulf8u.return_3+1 sta ma+1 //SEG325 [160] if((word) multiply_results_compare::ms#0==(word) multiply_results_compare::ma#0) goto multiply_results_compare::@3 [ line_cursor#10 char_cursor#30 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#10 char_cursor#30 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 @@ -7536,36 +7532,36 @@ multiply_error: { str2: .text " slow:@" str3: .text " / fast asm:@" } -//SEG409 slow_multiply -slow_multiply: { +//SEG409 muls8u +muls8u: { .label return = $1c .label m = $1c .label i = $1b .label a = $4e .label b = $4f .label return_2 = $50 - //SEG410 [195] if((byte) slow_multiply::a#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto slow_multiply::@1 [ slow_multiply::a#0 slow_multiply::b#0 ] ( main:2::multiply_results_compare:13::slow_multiply:152 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::a#0 slow_multiply::b#0 ] ) -- vbuz1_eq_0_then_la1 + //SEG410 [195] if((byte) muls8u::a#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls8u::@1 [ muls8u::a#0 muls8u::b#0 ] ( main:2::multiply_results_compare:13::muls8u:152 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 muls8u::a#0 muls8u::b#0 ] ) -- vbuz1_eq_0_then_la1 lda a - beq b1_from_slow_multiply - //SEG411 [196] phi from slow_multiply to slow_multiply::@2 [phi:slow_multiply->slow_multiply::@2] - b2_from_slow_multiply: - //SEG412 [196] phi (byte) slow_multiply::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:slow_multiply->slow_multiply::@2#0] -- vbuz1=vbuc1 + beq b1_from_muls8u + //SEG411 [196] phi from muls8u to muls8u::@2 [phi:muls8u->muls8u::@2] + b2_from_muls8u: + //SEG412 [196] phi (byte) muls8u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8u->muls8u::@2#0] -- vbuz1=vbuc1 lda #0 sta i - //SEG413 [196] phi (word) slow_multiply::m#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:slow_multiply->slow_multiply::@2#1] -- vwuz1=vbuc1 + //SEG413 [196] phi (word) muls8u::m#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8u->muls8u::@2#1] -- vwuz1=vbuc1 lda #0 sta m lda #0 sta m+1 jmp b2 - //SEG414 [196] phi from slow_multiply::@2 to slow_multiply::@2 [phi:slow_multiply::@2->slow_multiply::@2] + //SEG414 [196] phi from muls8u::@2 to muls8u::@2 [phi:muls8u::@2->muls8u::@2] b2_from_b2: - //SEG415 [196] phi (byte) slow_multiply::i#2 = (byte) slow_multiply::i#1 [phi:slow_multiply::@2->slow_multiply::@2#0] -- register_copy - //SEG416 [196] phi (word) slow_multiply::m#3 = (word) slow_multiply::m#1 [phi:slow_multiply::@2->slow_multiply::@2#1] -- register_copy + //SEG415 [196] phi (byte) muls8u::i#2 = (byte) muls8u::i#1 [phi:muls8u::@2->muls8u::@2#0] -- register_copy + //SEG416 [196] phi (word) muls8u::m#3 = (word) muls8u::m#1 [phi:muls8u::@2->muls8u::@2#1] -- register_copy jmp b2 - //SEG417 slow_multiply::@2 + //SEG417 muls8u::@2 b2: - //SEG418 [197] (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:152 [ line_cursor#10 char_cursor#30 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 + //SEG418 [197] (word) muls8u::m#1 ← (word) muls8u::m#3 + (byte) muls8u::b#0 [ muls8u::a#0 muls8u::b#0 muls8u::i#2 muls8u::m#1 ] ( main:2::multiply_results_compare:13::muls8u:152 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 muls8u::a#0 muls8u::b#0 muls8u::i#2 muls8u::m#1 ] ) -- vwuz1=vwuz1_plus_vbuz2 lda b clc adc m @@ -7573,30 +7569,30 @@ slow_multiply: { lda #0 adc m+1 sta m+1 - //SEG419 [198] (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:152 [ line_cursor#10 char_cursor#30 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 + //SEG419 [198] (byte) muls8u::i#1 ← ++ (byte) muls8u::i#2 [ muls8u::a#0 muls8u::b#0 muls8u::m#1 muls8u::i#1 ] ( main:2::multiply_results_compare:13::muls8u:152 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 muls8u::a#0 muls8u::b#0 muls8u::m#1 muls8u::i#1 ] ) -- vbuz1=_inc_vbuz1 inc i - //SEG420 [199] 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:152 [ line_cursor#10 char_cursor#30 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 + //SEG420 [199] if((byte) muls8u::i#1!=(byte) muls8u::a#0) goto muls8u::@2 [ muls8u::a#0 muls8u::b#0 muls8u::m#1 muls8u::i#1 ] ( main:2::multiply_results_compare:13::muls8u:152 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 muls8u::a#0 muls8u::b#0 muls8u::m#1 muls8u::i#1 ] ) -- vbuz1_neq_vbuz2_then_la1 lda i cmp a bne b2_from_b2 - //SEG421 [200] phi from slow_multiply::@2 to slow_multiply::@1 [phi:slow_multiply::@2->slow_multiply::@1] + //SEG421 [200] phi from muls8u::@2 to muls8u::@1 [phi:muls8u::@2->muls8u::@1] b1_from_b2: - //SEG422 [200] phi (word) slow_multiply::return#0 = (word) slow_multiply::m#1 [phi:slow_multiply::@2->slow_multiply::@1#0] -- register_copy + //SEG422 [200] phi (word) muls8u::return#0 = (word) muls8u::m#1 [phi:muls8u::@2->muls8u::@1#0] -- register_copy jmp b1 - //SEG423 [200] phi from slow_multiply to slow_multiply::@1 [phi:slow_multiply->slow_multiply::@1] - b1_from_slow_multiply: - //SEG424 [200] phi (word) slow_multiply::return#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:slow_multiply->slow_multiply::@1#0] -- vwuz1=vbuc1 + //SEG423 [200] phi from muls8u to muls8u::@1 [phi:muls8u->muls8u::@1] + b1_from_muls8u: + //SEG424 [200] phi (word) muls8u::return#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8u->muls8u::@1#0] -- vwuz1=vbuc1 lda #0 sta return lda #0 sta return+1 jmp b1 - //SEG425 slow_multiply::@1 + //SEG425 muls8u::@1 b1: jmp breturn - //SEG426 slow_multiply::@return + //SEG426 muls8u::@return breturn: - //SEG427 [201] return [ slow_multiply::return#0 ] ( main:2::multiply_results_compare:13::slow_multiply:152 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::return#0 ] ) + //SEG427 [201] return [ muls8u::return#0 ] ( main:2::multiply_results_compare:13::muls8u:152 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 muls8u::return#0 ] ) rts } //SEG428 multiply_tables_compare @@ -7605,15 +7601,15 @@ multiply_tables_compare: { .label kc_sqr = $1e //SEG429 [203] phi from multiply_tables_compare to multiply_tables_compare::@1 [phi:multiply_tables_compare->multiply_tables_compare::@1] b1_from_multiply_tables_compare: - //SEG430 [203] 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 #multiply_tables_compare::@1#0] -- pbuz1=pbuc1 + lda #asm_mul_sqr1_lo + lda #>mula_sqr1_lo sta asm_sqr+1 - //SEG431 [203] 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 #multiply_tables_compare::@1#1] -- pbuz1=pbuc1 + lda #mul_sqr1_lo + lda #>mulf_sqr1_lo sta kc_sqr+1 jmp b1 //SEG432 [203] phi from multiply_tables_compare::@2 to multiply_tables_compare::@1 [phi:multiply_tables_compare::@2->multiply_tables_compare::@1] @@ -7717,13 +7713,13 @@ multiply_tables_compare: { bne !+ inc kc_sqr+1 !: - //SEG469 [217] if((byte*) multiply_tables_compare::kc_sqr#1<(const byte[512]) mul_sqr1_lo#0+(word/signed word/dword/signed dword) 512*(byte/signed byte/word/signed word/dword/signed dword) 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 + //SEG469 [217] if((byte*) multiply_tables_compare::kc_sqr#1<(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512*(byte/signed byte/word/signed word/dword/signed dword) 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 + cmp #>mulf_sqr1_lo+$200*4 bcc b1_from_b2 bne !+ lda kc_sqr - cmp #multiply_tables_compare::@5] @@ -7774,10 +7770,10 @@ multiply_tables_compare: { str1: .text " / @" str2: .text "multiply tables match!@" } -//SEG486 init_multiply_asm -init_multiply_asm: { +//SEG486 mulf_init_asm +mulf_init_asm: { .label mem = $ff - //SEG487 asm { ldx#$00 txa .byte$c9 lb1: tya adc#$00 ml1: staasm_mul_sqr1_hi,x tay cmp#$40 txa ror ml9: adc#$00 staml9+1 inx ml0: staasm_mul_sqr1_lo,x bnelb1 incml0+2 incml1+2 clc iny bnelb1 ldx#$00 ldy#$ff !: ldaasm_mul_sqr1_hi+1,x staasm_mul_sqr2_hi+$100,x ldaasm_mul_sqr1_hi,x staasm_mul_sqr2_hi,y ldaasm_mul_sqr1_lo+1,x staasm_mul_sqr2_lo+$100,x ldaasm_mul_sqr1_lo,x staasm_mul_sqr2_lo,y dey inx bne!- } + //SEG487 asm { ldx#$00 txa .byte$c9 lb1: tya adc#$00 ml1: stamula_sqr1_hi,x tay cmp#$40 txa ror ml9: adc#$00 staml9+1 inx ml0: stamula_sqr1_lo,x bnelb1 incml0+2 incml1+2 clc iny bnelb1 ldx#$00 ldy#$ff !: ldamula_sqr1_hi+1,x stamula_sqr2_hi+$100,x ldamula_sqr1_hi,x stamula_sqr2_hi,y ldamula_sqr1_lo+1,x stamula_sqr2_lo+$100,x ldamula_sqr1_lo,x stamula_sqr2_lo,y dey inx bne!- } ldx #0 txa .byte $c9 @@ -7785,7 +7781,7 @@ init_multiply_asm: { tya adc #0 ml1: - sta asm_mul_sqr1_hi,x + sta mula_sqr1_hi,x tay cmp #$40 txa @@ -7795,7 +7791,7 @@ init_multiply_asm: { sta ml9+1 inx ml0: - sta asm_mul_sqr1_lo,x + sta mula_sqr1_lo,x bne lb1 inc ml0+2 inc ml1+2 @@ -7805,37 +7801,37 @@ init_multiply_asm: { ldx #0 ldy #$ff !: - lda asm_mul_sqr1_hi+1,x - sta asm_mul_sqr2_hi+$100,x - lda asm_mul_sqr1_hi,x - sta asm_mul_sqr2_hi,y - lda asm_mul_sqr1_lo+1,x - sta asm_mul_sqr2_lo+$100,x - lda asm_mul_sqr1_lo,x - sta asm_mul_sqr2_lo,y + lda mula_sqr1_hi+1,x + sta mula_sqr2_hi+$100,x + lda mula_sqr1_hi,x + sta mula_sqr2_hi,y + lda mula_sqr1_lo+1,x + sta mula_sqr2_lo+$100,x + lda mula_sqr1_lo,x + sta mula_sqr2_lo,y dey inx bne !- - //SEG488 [224] *((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 + //SEG488 [224] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr1_lo#0) [ ] ( main:2::mulf_init_asm:9 [ ] ) -- _deref_pbuc1=_deref_pbuc2 + lda mula_sqr1_lo sta mem - //SEG489 [225] *((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 + //SEG489 [225] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr1_hi#0) [ ] ( main:2::mulf_init_asm:9 [ ] ) -- _deref_pbuc1=_deref_pbuc2 + lda mula_sqr1_hi sta mem - //SEG490 [226] *((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 + //SEG490 [226] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr2_lo#0) [ ] ( main:2::mulf_init_asm:9 [ ] ) -- _deref_pbuc1=_deref_pbuc2 + lda mula_sqr2_lo sta mem - //SEG491 [227] *((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 + //SEG491 [227] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr2_hi#0) [ ] ( main:2::mulf_init_asm:9 [ ] ) -- _deref_pbuc1=_deref_pbuc2 + lda mula_sqr2_hi sta mem jmp breturn - //SEG492 init_multiply_asm::@return + //SEG492 mulf_init_asm::@return breturn: - //SEG493 [228] return [ ] ( main:2::init_multiply_asm:9 [ ] ) + //SEG493 [228] return [ ] ( main:2::mulf_init_asm:9 [ ] ) rts } -//SEG494 init_multiply -init_multiply: { +//SEG494 mulf_init +mulf_init: { .label _2 = $5e .label _5 = $5f .label _6 = $60 @@ -7848,87 +7844,87 @@ init_multiply: { .label x_255 = $2a .label sqr2_lo = $2b .label dir = $2f - //SEG495 [230] phi from init_multiply to init_multiply::@1 [phi:init_multiply->init_multiply::@1] - b1_from_init_multiply: - //SEG496 [230] phi (byte) init_multiply::x_2#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init_multiply->init_multiply::@1#0] -- vbuz1=vbuc1 + //SEG495 [230] phi from mulf_init to mulf_init::@1 [phi:mulf_init->mulf_init::@1] + b1_from_mulf_init: + //SEG496 [230] phi (byte) mulf_init::x_2#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#0] -- vbuz1=vbuc1 lda #0 sta x_2 - //SEG497 [230] phi (byte*) init_multiply::sqr1_hi#2 = (const byte[512]) mul_sqr1_hi#0+(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:init_multiply->init_multiply::@1#1] -- pbuz1=pbuc1 - lda #mulf_init::@1#1] -- pbuz1=pbuc1 + lda #mul_sqr1_hi+1 + lda #>mulf_sqr1_hi+1 sta sqr1_hi+1 - //SEG498 [230] phi (byte*) init_multiply::sqr1_lo#2 = (const byte[512]) mul_sqr1_lo#0+(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:init_multiply->init_multiply::@1#2] -- pbuz1=pbuc1 - lda #mulf_init::@1#2] -- pbuz1=pbuc1 + lda #mul_sqr1_lo+1 + lda #>mulf_sqr1_lo+1 sta sqr1_lo+1 - //SEG499 [230] phi (word) init_multiply::sqr#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init_multiply->init_multiply::@1#3] -- vwuz1=vbuc1 + //SEG499 [230] phi (word) mulf_init::sqr#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#3] -- vwuz1=vbuc1 lda #0 sta sqr lda #0 sta sqr+1 - //SEG500 [230] phi (byte) init_multiply::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init_multiply->init_multiply::@1#4] -- vbuz1=vbuc1 + //SEG500 [230] phi (byte) mulf_init::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#4] -- vbuz1=vbuc1 lda #0 sta c jmp b1 - //SEG501 [230] phi from init_multiply::@2 to init_multiply::@1 [phi:init_multiply::@2->init_multiply::@1] + //SEG501 [230] phi from mulf_init::@2 to mulf_init::@1 [phi:mulf_init::@2->mulf_init::@1] b1_from_b2: - //SEG502 [230] phi (byte) init_multiply::x_2#3 = (byte) init_multiply::x_2#2 [phi:init_multiply::@2->init_multiply::@1#0] -- register_copy - //SEG503 [230] phi (byte*) init_multiply::sqr1_hi#2 = (byte*) init_multiply::sqr1_hi#1 [phi:init_multiply::@2->init_multiply::@1#1] -- register_copy - //SEG504 [230] phi (byte*) init_multiply::sqr1_lo#2 = (byte*) init_multiply::sqr1_lo#1 [phi:init_multiply::@2->init_multiply::@1#2] -- register_copy - //SEG505 [230] phi (word) init_multiply::sqr#4 = (word) init_multiply::sqr#1 [phi:init_multiply::@2->init_multiply::@1#3] -- register_copy - //SEG506 [230] phi (byte) init_multiply::c#2 = (byte) init_multiply::c#1 [phi:init_multiply::@2->init_multiply::@1#4] -- register_copy + //SEG502 [230] phi (byte) mulf_init::x_2#3 = (byte) mulf_init::x_2#2 [phi:mulf_init::@2->mulf_init::@1#0] -- register_copy + //SEG503 [230] phi (byte*) mulf_init::sqr1_hi#2 = (byte*) mulf_init::sqr1_hi#1 [phi:mulf_init::@2->mulf_init::@1#1] -- register_copy + //SEG504 [230] phi (byte*) mulf_init::sqr1_lo#2 = (byte*) mulf_init::sqr1_lo#1 [phi:mulf_init::@2->mulf_init::@1#2] -- register_copy + //SEG505 [230] phi (word) mulf_init::sqr#4 = (word) mulf_init::sqr#1 [phi:mulf_init::@2->mulf_init::@1#3] -- register_copy + //SEG506 [230] phi (byte) mulf_init::c#2 = (byte) mulf_init::c#1 [phi:mulf_init::@2->mulf_init::@1#4] -- register_copy jmp b1 - //SEG507 init_multiply::@1 + //SEG507 mulf_init::@1 b1: - //SEG508 [231] (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 + //SEG508 [231] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 [ mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 ] ( main:2::mulf_init:7 [ mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 ] ) -- vbuz1=_inc_vbuz1 inc c - //SEG509 [232] (byte~) init_multiply::$2 ← (byte) init_multiply::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 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 + //SEG509 [232] (byte~) mulf_init::$2 ← (byte) mulf_init::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 1 [ mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$2 ] ( main:2::mulf_init:7 [ mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$2 ] ) -- vbuz1=vbuz2_band_vbuc1 lda #1 and c sta _2 - //SEG510 [233] if((byte~) init_multiply::$2!=(byte/signed byte/word/signed word/dword/signed dword) 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 + //SEG510 [233] if((byte~) mulf_init::$2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@2 [ mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 ] ( main:2::mulf_init:7 [ mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 ] ) -- vbuz1_neq_0_then_la1 lda _2 bne b2_from_b1 jmp b5 - //SEG511 init_multiply::@5 + //SEG511 mulf_init::@5 b5: - //SEG512 [234] (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 + //SEG512 [234] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 [ mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#1 ] ( main:2::mulf_init:7 [ mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#1 ] ) -- vbuz1=_inc_vbuz1 inc x_2 - //SEG513 [235] (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 + //SEG513 [235] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#1 mulf_init::sqr#2 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#1 mulf_init::sqr#2 ] ) -- vwuz1=_inc_vwuz1 inc sqr bne !+ inc sqr+1 !: - //SEG514 [236] phi from init_multiply::@1 init_multiply::@5 to init_multiply::@2 [phi:init_multiply::@1/init_multiply::@5->init_multiply::@2] + //SEG514 [236] phi from mulf_init::@1 mulf_init::@5 to mulf_init::@2 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2] b2_from_b1: b2_from_b5: - //SEG515 [236] 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 - //SEG516 [236] phi (word) init_multiply::sqr#3 = (word) init_multiply::sqr#4 [phi:init_multiply::@1/init_multiply::@5->init_multiply::@2#1] -- register_copy + //SEG515 [236] phi (byte) mulf_init::x_2#2 = (byte) mulf_init::x_2#3 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2#0] -- register_copy + //SEG516 [236] phi (word) mulf_init::sqr#3 = (word) mulf_init::sqr#4 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2#1] -- register_copy jmp b2 - //SEG517 init_multiply::@2 + //SEG517 mulf_init::@2 b2: - //SEG518 [237] (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 + //SEG518 [237] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$5 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$5 ] ) -- vbuz1=_lo_vwuz2 lda sqr sta _5 - //SEG519 [238] *((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 + //SEG519 [238] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ) -- _deref_pbuz1=vbuz2 lda _5 ldy #0 sta (sqr1_lo),y - //SEG520 [239] (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 + //SEG520 [239] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$6 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$6 ] ) -- vbuz1=_hi_vwuz2 lda sqr+1 sta _6 - //SEG521 [240] *((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 + //SEG521 [240] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ) -- _deref_pbuz1=vbuz2 lda _6 ldy #0 sta (sqr1_hi),y - //SEG522 [241] (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 + //SEG522 [241] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ) -- pbuz1=_inc_pbuz1 inc sqr1_hi bne !+ inc sqr1_hi+1 !: - //SEG523 [242] (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 + //SEG523 [242] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ) -- vwuz1=vwuz1_plus_vbuz2 lda x_2 clc adc sqr @@ -7936,111 +7932,111 @@ init_multiply: { lda #0 adc sqr+1 sta sqr+1 - //SEG524 [243] (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 + //SEG524 [243] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 [ mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_lo#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ( main:2::mulf_init:7 [ mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_lo#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ) -- pbuz1=_inc_pbuz1 inc sqr1_lo bne !+ inc sqr1_lo+1 !: - //SEG525 [244] if((byte*) init_multiply::sqr1_lo#1!=(const byte[512]) mul_sqr1_lo#0+(word/signed word/dword/signed dword) 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 + //SEG525 [244] if((byte*) mulf_init::sqr1_lo#1!=(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512) goto mulf_init::@1 [ mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_lo#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ( main:2::mulf_init:7 [ mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_lo#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ) -- pbuz1_neq_pbuc1_then_la1 lda sqr1_lo+1 - cmp #>mul_sqr1_lo+$200 + cmp #>mulf_sqr1_lo+$200 bne b1_from_b2 lda sqr1_lo - cmp #init_multiply::@3] + //SEG526 [245] phi from mulf_init::@2 to mulf_init::@3 [phi:mulf_init::@2->mulf_init::@3] b3_from_b2: - //SEG527 [245] phi (byte) init_multiply::dir#2 = (byte/word/signed word/dword/signed dword) 255 [phi:init_multiply::@2->init_multiply::@3#0] -- vbuz1=vbuc1 + //SEG527 [245] phi (byte) mulf_init::dir#2 = (byte/word/signed word/dword/signed dword) 255 [phi:mulf_init::@2->mulf_init::@3#0] -- vbuz1=vbuc1 lda #$ff sta dir - //SEG528 [245] 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 #mulf_init::@3#1] -- pbuz1=pbuc1 + lda #mul_sqr2_hi + lda #>mulf_sqr2_hi sta sqr2_hi+1 - //SEG529 [245] 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 #mulf_init::@3#2] -- pbuz1=pbuc1 + lda #mul_sqr2_lo + lda #>mulf_sqr2_lo sta sqr2_lo+1 - //SEG530 [245] phi (byte) init_multiply::x_255#2 = ((byte))-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:init_multiply::@2->init_multiply::@3#3] -- vbuz1=vbuc1 + //SEG530 [245] phi (byte) mulf_init::x_255#2 = ((byte))-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init::@2->mulf_init::@3#3] -- vbuz1=vbuc1 lda #-1 sta x_255 jmp b3 - //SEG531 [245] phi from init_multiply::@4 to init_multiply::@3 [phi:init_multiply::@4->init_multiply::@3] + //SEG531 [245] phi from mulf_init::@4 to mulf_init::@3 [phi:mulf_init::@4->mulf_init::@3] b3_from_b4: - //SEG532 [245] phi (byte) init_multiply::dir#2 = (byte) init_multiply::dir#3 [phi:init_multiply::@4->init_multiply::@3#0] -- register_copy - //SEG533 [245] phi (byte*) init_multiply::sqr2_hi#2 = (byte*) init_multiply::sqr2_hi#1 [phi:init_multiply::@4->init_multiply::@3#1] -- register_copy - //SEG534 [245] phi (byte*) init_multiply::sqr2_lo#2 = (byte*) init_multiply::sqr2_lo#1 [phi:init_multiply::@4->init_multiply::@3#2] -- register_copy - //SEG535 [245] phi (byte) init_multiply::x_255#2 = (byte) init_multiply::x_255#1 [phi:init_multiply::@4->init_multiply::@3#3] -- register_copy + //SEG532 [245] phi (byte) mulf_init::dir#2 = (byte) mulf_init::dir#3 [phi:mulf_init::@4->mulf_init::@3#0] -- register_copy + //SEG533 [245] phi (byte*) mulf_init::sqr2_hi#2 = (byte*) mulf_init::sqr2_hi#1 [phi:mulf_init::@4->mulf_init::@3#1] -- register_copy + //SEG534 [245] phi (byte*) mulf_init::sqr2_lo#2 = (byte*) mulf_init::sqr2_lo#1 [phi:mulf_init::@4->mulf_init::@3#2] -- register_copy + //SEG535 [245] phi (byte) mulf_init::x_255#2 = (byte) mulf_init::x_255#1 [phi:mulf_init::@4->mulf_init::@3#3] -- register_copy jmp b3 - //SEG536 init_multiply::@3 + //SEG536 mulf_init::@3 b3: - //SEG537 [246] *((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 + //SEG537 [246] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[512]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 ldy x_255 - lda mul_sqr1_lo,y + lda mulf_sqr1_lo,y ldy #0 sta (sqr2_lo),y - //SEG538 [247] *((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 + //SEG538 [247] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[512]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 ldy x_255 - lda mul_sqr1_hi,y + lda mulf_sqr1_hi,y ldy #0 sta (sqr2_hi),y - //SEG539 [248] (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 + //SEG539 [248] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::sqr2_hi#1 ] ( main:2::mulf_init:7 [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::sqr2_hi#1 ] ) -- pbuz1=_inc_pbuz1 inc sqr2_hi bne !+ inc sqr2_hi+1 !: - //SEG540 [249] (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 + //SEG540 [249] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ( main:2::mulf_init:7 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ) -- vbuz1=vbuz1_plus_vbuz2 lda x_255 clc adc dir sta x_255 - //SEG541 [250] if((byte) init_multiply::x_255#1!=(byte/signed byte/word/signed word/dword/signed dword) 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 + //SEG541 [250] if((byte) mulf_init::x_255#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@12 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ( main:2::mulf_init:7 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ) -- vbuz1_neq_0_then_la1 lda x_255 bne b12_from_b3 - //SEG542 [251] phi from init_multiply::@3 to init_multiply::@4 [phi:init_multiply::@3->init_multiply::@4] + //SEG542 [251] phi from mulf_init::@3 to mulf_init::@4 [phi:mulf_init::@3->mulf_init::@4] b4_from_b3: - //SEG543 [251] phi (byte) init_multiply::dir#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:init_multiply::@3->init_multiply::@4#0] -- vbuz1=vbuc1 + //SEG543 [251] phi (byte) mulf_init::dir#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init::@3->mulf_init::@4#0] -- vbuz1=vbuc1 lda #1 sta dir jmp b4 - //SEG544 init_multiply::@4 + //SEG544 mulf_init::@4 b4: - //SEG545 [252] (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 + //SEG545 [252] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 [ mulf_init::x_255#1 mulf_init::sqr2_lo#1 mulf_init::sqr2_hi#1 mulf_init::dir#3 ] ( main:2::mulf_init:7 [ mulf_init::x_255#1 mulf_init::sqr2_lo#1 mulf_init::sqr2_hi#1 mulf_init::dir#3 ] ) -- pbuz1=_inc_pbuz1 inc sqr2_lo bne !+ inc sqr2_lo+1 !: - //SEG546 [253] if((byte*) init_multiply::sqr2_lo#1!=(const byte[512]) mul_sqr2_lo#0+(word/signed word/dword/signed dword) 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 + //SEG546 [253] if((byte*) mulf_init::sqr2_lo#1!=(const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) goto mulf_init::@3 [ mulf_init::x_255#1 mulf_init::sqr2_lo#1 mulf_init::sqr2_hi#1 mulf_init::dir#3 ] ( main:2::mulf_init:7 [ mulf_init::x_255#1 mulf_init::sqr2_lo#1 mulf_init::sqr2_hi#1 mulf_init::dir#3 ] ) -- pbuz1_neq_pbuc1_then_la1 lda sqr2_lo+1 - cmp #>mul_sqr2_lo+$1ff + cmp #>mulf_sqr2_lo+$1ff bne b3_from_b4 lda sqr2_lo - cmp #init_multiply::@12] + //SEG552 [257] phi from mulf_init::@3 to mulf_init::@12 [phi:mulf_init::@3->mulf_init::@12] b12_from_b3: jmp b12 - //SEG553 init_multiply::@12 + //SEG553 mulf_init::@12 b12: - //SEG554 [251] phi from init_multiply::@12 to init_multiply::@4 [phi:init_multiply::@12->init_multiply::@4] + //SEG554 [251] phi from mulf_init::@12 to mulf_init::@4 [phi:mulf_init::@12->mulf_init::@4] b4_from_b12: - //SEG555 [251] phi (byte) init_multiply::dir#3 = (byte) init_multiply::dir#2 [phi:init_multiply::@12->init_multiply::@4#0] -- register_copy + //SEG555 [251] phi (byte) mulf_init::dir#3 = (byte) mulf_init::dir#2 [phi:mulf_init::@12->mulf_init::@4#0] -- register_copy jmp b4 } //SEG556 print_cls @@ -8083,30 +8079,30 @@ print_cls: { rts } .align $100 - mul_sqr1_lo: .fill $200, 0 + mulf_sqr1_lo: .fill $200, 0 .align $100 - mul_sqr1_hi: .fill $200, 0 + mulf_sqr1_hi: .fill $200, 0 .align $100 - mul_sqr2_lo: .fill $200, 0 + mulf_sqr2_lo: .fill $200, 0 .align $100 - mul_sqr2_hi: .fill $200, 0 + mulf_sqr2_hi: .fill $200, 0 .align $100 - asm_mul_sqr1_lo: .fill $200, 0 + mula_sqr1_lo: .fill $200, 0 .align $100 - asm_mul_sqr1_hi: .fill $200, 0 + mula_sqr1_hi: .fill $200, 0 .align $100 - asm_mul_sqr2_lo: .fill $200, 0 + mula_sqr2_lo: .fill $200, 0 .align $100 - asm_mul_sqr2_hi: .fill $200, 0 + mula_sqr2_hi: .fill $200, 0 REGISTER UPLIFT POTENTIAL REGISTERS Statement [4] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 5 [ ] ( main:2 [ ] ) always clobbers reg byte a -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 [23] (signed word) muls8s::return#2 ← (signed word) muls8s::return#0 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 muls8s::return#2 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 muls8s::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)(word) signed_multiply::m#4 [ 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 [24] (signed word) signed_multiply_results_compare::ms#0 ← (signed word) muls8s::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) mulf8s::return#2 ← (signed word)(word) mulf8s::m#4 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 mulf8s::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 mulf8s::return#2 line_cursor#1 ] ) always clobbers reg byte a +Statement [29] (signed word) signed_multiply_results_compare::ma#0 ← (signed word) mulf8s::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/dword/signed dword) 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 @@ -8137,83 +8133,83 @@ Statement [101] *((byte*) char_cursor#78) ← (byte) print_char::ch#4 [ char_cur 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#9 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 [120] (byte/signed byte/word/signed word/dword/signed dword~) signed_multiply::$16 ← (byte~) signed_multiply::$6 - (byte)(signed byte) signed_multiply::b#0 [ 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 [124] (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 [125] (byte/signed byte/word/signed word/dword/signed dword~) signed_multiply::$17 ← (byte~) signed_multiply::$12 - (byte)(signed byte) signed_multiply::a#0 [ 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 asm { ldamemA stasm1+1 stasm3+1 eor#$ff stasm2+1 stasm4+1 ldxmemB sec sm1: ldamul_sqr1_lo,x sm2: sbcmul_sqr2_lo,x stamemA sm3: ldamul_sqr1_hi,x sm4: sbcmul_sqr2_hi,x stamemB } always clobbers reg byte a reg byte x +Statement [116] (word) mulf8u::return#2 ← (word) mulf8u::return#0 [ mulf8s::a#0 mulf8s::b#0 mulf8u::return#2 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::a#0 mulf8s::b#0 mulf8u::return#2 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:56 [ mulf8s::a#0 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:57 [ mulf8s::b#0 ] +Statement [117] (word) mulf8s::m#0 ← (word) mulf8u::return#2 [ mulf8s::a#0 mulf8s::b#0 mulf8s::m#0 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::a#0 mulf8s::b#0 mulf8s::m#0 ] ) always clobbers reg byte a +Statement [119] (byte~) mulf8s::$6 ← > (word) mulf8s::m#0 [ mulf8s::a#0 mulf8s::b#0 mulf8s::m#0 mulf8s::$6 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::a#0 mulf8s::b#0 mulf8s::m#0 mulf8s::$6 ] ) always clobbers reg byte a +Statement [120] (byte/signed byte/word/signed word/dword/signed dword~) mulf8s::$16 ← (byte~) mulf8s::$6 - (byte)(signed byte) mulf8s::b#0 [ mulf8s::a#0 mulf8s::b#0 mulf8s::m#0 mulf8s::$16 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::a#0 mulf8s::b#0 mulf8s::m#0 mulf8s::$16 ] ) always clobbers reg byte a +Statement [124] (byte~) mulf8s::$12 ← > (word) mulf8s::m#5 [ mulf8s::a#0 mulf8s::m#5 mulf8s::$12 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::a#0 mulf8s::m#5 mulf8s::$12 ] ) always clobbers reg byte a +Statement [125] (byte/signed byte/word/signed word/dword/signed dword~) mulf8s::$17 ← (byte~) mulf8s::$12 - (byte)(signed byte) mulf8s::a#0 [ mulf8s::m#5 mulf8s::$17 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::m#5 mulf8s::$17 ] ) always clobbers reg byte a +Statement asm { ldamemA stasm1+1 stasm3+1 eor#$ff stasm2+1 stasm4+1 ldxmemB sec sm1: ldamulf_sqr1_lo,x sm2: sbcmulf_sqr2_lo,x stamemA sm3: ldamulf_sqr1_hi,x sm4: sbcmulf_sqr2_hi,x stamemB } always clobbers reg byte a reg byte x 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 x as potential for zp ZP_BYTE:56 [ mulf8s::a#0 ] +Removing always clobbered register reg byte x as potential for zp ZP_BYTE:57 [ mulf8s::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 [133] (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:157 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply::return#0 ] ) always clobbers reg byte a -Statement [137] (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 [144] (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 [153] (word) slow_multiply::return#2 ← (word) slow_multiply::return#0 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::return#2 ] ( main:2::multiply_results_compare:13 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::return#2 ] ) always clobbers reg byte a -Statement [154] (word) multiply_results_compare::ms#0 ← (word) slow_multiply::return#2 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ) always clobbers reg byte a -Statement [158] (word) multiply::return#3 ← (word) multiply::return#0 [ line_cursor#10 char_cursor#30 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#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply::return#3 ] ) always clobbers reg byte a -Statement [159] (word) multiply_results_compare::ma#0 ← (word) multiply::return#3 [ line_cursor#10 char_cursor#30 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#10 char_cursor#30 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 [133] (word) mulf8u::return#0 ← *((const byte*) mulf8u::memB#0) w= *((const byte*) mulf8u::memA#0) [ mulf8u::return#0 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27::mulf8u:115 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::a#0 mulf8s::b#0 mulf8u::return#0 ] main:2::multiply_results_compare:13::mulf8u:157 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 mulf8u::return#0 ] ) always clobbers reg byte a +Statement [137] (signed word) muls8s::m#1 ← (signed word) muls8s::m#3 - (signed byte) muls8s::b#0 [ muls8s::a#0 muls8s::b#0 muls8s::i#2 muls8s::m#1 ] ( main:2::signed_multiply_results_compare:15::muls8s:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 muls8s::a#0 muls8s::b#0 muls8s::i#2 muls8s::m#1 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:50 [ muls8s::a#0 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:51 [ muls8s::b#0 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:21 [ muls8s::i#2 muls8s::i#1 ] +Statement [144] (signed word) muls8s::m#2 ← (signed word) muls8s::m#5 + (signed byte) muls8s::b#0 [ muls8s::a#0 muls8s::b#0 muls8s::m#2 muls8s::j#2 ] ( main:2::signed_multiply_results_compare:15::muls8s:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 muls8s::a#0 muls8s::b#0 muls8s::m#2 muls8s::j#2 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:24 [ muls8s::j#2 muls8s::j#1 ] +Statement [153] (word) muls8u::return#2 ← (word) muls8u::return#0 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 muls8u::return#2 ] ( main:2::multiply_results_compare:13 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 muls8u::return#2 ] ) always clobbers reg byte a +Statement [154] (word) multiply_results_compare::ms#0 ← (word) muls8u::return#2 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ) always clobbers reg byte a +Statement [158] (word) mulf8u::return#3 ← (word) mulf8u::return#0 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 mulf8u::return#3 ] ( main:2::multiply_results_compare:13 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 mulf8u::return#3 ] ) always clobbers reg byte a +Statement [159] (word) multiply_results_compare::ma#0 ← (word) mulf8u::return#3 [ line_cursor#10 char_cursor#30 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#10 char_cursor#30 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 [160] if((word) multiply_results_compare::ms#0==(word) multiply_results_compare::ma#0) goto multiply_results_compare::@3 [ line_cursor#10 char_cursor#30 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#10 char_cursor#30 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 [161] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 [ line_cursor#10 char_cursor#30 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#10 char_cursor#30 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] (word) multiply_error::ms#0 ← (word) multiply_results_compare::ms#0 [ line_cursor#10 char_cursor#30 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#10 char_cursor#30 multiply_results_compare::ma#0 multiply_error::a#0 multiply_error::b#0 multiply_error::ms#0 ] ) always clobbers reg byte a Statement [165] (word) multiply_error::ma#0 ← (word) multiply_results_compare::ma#0 [ line_cursor#10 char_cursor#30 multiply_error::a#0 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#10 char_cursor#30 multiply_error::a#0 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 ] ) always clobbers reg byte a Statement [186] (word) print_word::w#3 ← (word) multiply_error::ms#0 [ char_cursor#122 line_cursor#10 print_word::w#3 multiply_error::ma#0 ] ( main:2::multiply_results_compare:13::multiply_error:166 [ char_cursor#122 line_cursor#10 print_word::w#3 multiply_error::ma#0 ] ) always clobbers reg byte a Statement [190] (word) print_word::w#4 ← (word) multiply_error::ma#0 [ char_cursor#122 line_cursor#10 print_word::w#4 ] ( main:2::multiply_results_compare:13::multiply_error:166 [ char_cursor#122 line_cursor#10 print_word::w#4 ] ) always clobbers reg byte a -Statement [197] (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:152 [ line_cursor#10 char_cursor#30 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:78 [ slow_multiply::a#0 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:79 [ 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 [197] (word) muls8u::m#1 ← (word) muls8u::m#3 + (byte) muls8u::b#0 [ muls8u::a#0 muls8u::b#0 muls8u::i#2 muls8u::m#1 ] ( main:2::multiply_results_compare:13::muls8u:152 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 muls8u::a#0 muls8u::b#0 muls8u::i#2 muls8u::m#1 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:78 [ muls8u::a#0 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:79 [ muls8u::b#0 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:27 [ muls8u::i#2 muls8u::i#1 ] Statement [204] 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 [205] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 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 [207] (word~) print_word::w#9 ← (word)(byte*) multiply_tables_compare::asm_sqr#2 [ char_cursor#122 print_word::w#9 multiply_tables_compare::kc_sqr#2 ] ( main:2::multiply_tables_compare:11 [ char_cursor#122 print_word::w#9 multiply_tables_compare::kc_sqr#2 ] ) always clobbers reg byte a Statement [211] (word~) print_word::w#10 ← (word)(byte*) multiply_tables_compare::kc_sqr#2 [ char_cursor#122 print_word::w#10 ] ( main:2::multiply_tables_compare:11 [ char_cursor#122 print_word::w#10 ] ) always clobbers reg byte a -Statement [217] if((byte*) multiply_tables_compare::kc_sqr#1<(const byte[512]) mul_sqr1_lo#0+(word/signed word/dword/signed dword) 512*(byte/signed byte/word/signed word/dword/signed dword) 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 [217] if((byte*) multiply_tables_compare::kc_sqr#1<(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512*(byte/signed byte/word/signed word/dword/signed dword) 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 [222] (byte*~) char_cursor#201 ← (byte*) line_cursor#1 [ line_cursor#1 char_cursor#201 ] ( main:2::multiply_tables_compare:11 [ line_cursor#1 char_cursor#201 ] ) always clobbers reg byte a -Statement asm { ldx#$00 txa .byte$c9 lb1: tya adc#$00 ml1: staasm_mul_sqr1_hi,x tay cmp#$40 txa ror ml9: adc#$00 staml9+1 inx ml0: staasm_mul_sqr1_lo,x bnelb1 incml0+2 incml1+2 clc iny bnelb1 ldx#$00 ldy#$ff !: ldaasm_mul_sqr1_hi+1,x staasm_mul_sqr2_hi+$100,x ldaasm_mul_sqr1_hi,x staasm_mul_sqr2_hi,y ldaasm_mul_sqr1_lo+1,x staasm_mul_sqr2_lo+$100,x ldaasm_mul_sqr1_lo,x staasm_mul_sqr2_lo,y dey inx bne!- } always clobbers reg byte a reg byte x reg byte y -Statement [224] *((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 [225] *((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 [226] *((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 [227] *((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 [232] (byte~) init_multiply::$2 ← (byte) init_multiply::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 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 [237] (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 [238] *((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 [239] (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 [240] *((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 [242] (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 [244] if((byte*) init_multiply::sqr1_lo#1!=(const byte[512]) mul_sqr1_lo#0+(word/signed word/dword/signed dword) 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 [246] *((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 [247] *((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 [249] (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 [253] if((byte*) init_multiply::sqr2_lo#1!=(const byte[512]) mul_sqr2_lo#0+(word/signed word/dword/signed dword) 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 [254] *((const byte[512]) mul_sqr2_lo#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mul_sqr1_lo#0+(word/signed word/dword/signed dword) 256) [ ] ( main:2::init_multiply:7 [ ] ) always clobbers reg byte a -Statement [255] *((const byte[512]) mul_sqr2_hi#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mul_sqr1_hi#0+(word/signed word/dword/signed dword) 256) [ ] ( main:2::init_multiply:7 [ ] ) always clobbers reg byte a +Statement asm { ldx#$00 txa .byte$c9 lb1: tya adc#$00 ml1: stamula_sqr1_hi,x tay cmp#$40 txa ror ml9: adc#$00 staml9+1 inx ml0: stamula_sqr1_lo,x bnelb1 incml0+2 incml1+2 clc iny bnelb1 ldx#$00 ldy#$ff !: ldamula_sqr1_hi+1,x stamula_sqr2_hi+$100,x ldamula_sqr1_hi,x stamula_sqr2_hi,y ldamula_sqr1_lo+1,x stamula_sqr2_lo+$100,x ldamula_sqr1_lo,x stamula_sqr2_lo,y dey inx bne!- } always clobbers reg byte a reg byte x reg byte y +Statement [224] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr1_lo#0) [ ] ( main:2::mulf_init_asm:9 [ ] ) always clobbers reg byte a +Statement [225] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr1_hi#0) [ ] ( main:2::mulf_init_asm:9 [ ] ) always clobbers reg byte a +Statement [226] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr2_lo#0) [ ] ( main:2::mulf_init_asm:9 [ ] ) always clobbers reg byte a +Statement [227] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr2_hi#0) [ ] ( main:2::mulf_init_asm:9 [ ] ) always clobbers reg byte a +Statement [232] (byte~) mulf_init::$2 ← (byte) mulf_init::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 1 [ mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$2 ] ( main:2::mulf_init:7 [ mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$2 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:39 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:34 [ mulf_init::c#2 mulf_init::c#1 ] +Statement [237] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$5 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$5 ] ) always clobbers reg byte a +Statement [238] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ) always clobbers reg byte y +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:34 [ mulf_init::c#2 mulf_init::c#1 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:39 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] +Statement [239] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$6 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$6 ] ) always clobbers reg byte a +Statement [240] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ) always clobbers reg byte y +Statement [242] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ) always clobbers reg byte a +Statement [244] if((byte*) mulf_init::sqr1_lo#1!=(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512) goto mulf_init::@1 [ mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_lo#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ( main:2::mulf_init:7 [ mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_lo#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ) always clobbers reg byte a +Statement [246] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[512]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:42 [ mulf_init::x_255#2 mulf_init::x_255#1 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:42 [ mulf_init::x_255#2 mulf_init::x_255#1 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:47 [ mulf_init::dir#2 mulf_init::dir#3 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:47 [ mulf_init::dir#2 mulf_init::dir#3 ] +Statement [247] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[512]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y +Statement [249] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ( main:2::mulf_init:7 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ) always clobbers reg byte a +Statement [253] if((byte*) mulf_init::sqr2_lo#1!=(const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) goto mulf_init::@3 [ mulf_init::x_255#1 mulf_init::sqr2_lo#1 mulf_init::sqr2_hi#1 mulf_init::dir#3 ] ( main:2::mulf_init:7 [ mulf_init::x_255#1 mulf_init::sqr2_lo#1 mulf_init::sqr2_hi#1 mulf_init::dir#3 ] ) always clobbers reg byte a +Statement [254] *((const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 256) [ ] ( main:2::mulf_init:7 [ ] ) always clobbers reg byte a +Statement [255] *((const byte[512]) mulf_sqr2_hi#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_hi#0+(word/signed word/dword/signed dword) 256) [ ] ( main:2::mulf_init:7 [ ] ) always clobbers reg byte a Statement [260] *((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 [262] if((byte*) print_cls::sc#1!=(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 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/dword/signed dword) 5 [ ] ( main:2 [ ] ) always clobbers reg byte a -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)(word) signed_multiply::m#4 [ 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 [23] (signed word) muls8s::return#2 ← (signed word) muls8s::return#0 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 muls8s::return#2 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 muls8s::return#2 line_cursor#1 ] ) always clobbers reg byte a +Statement [24] (signed word) signed_multiply_results_compare::ms#0 ← (signed word) muls8s::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) mulf8s::return#2 ← (signed word)(word) mulf8s::m#4 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 mulf8s::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 mulf8s::return#2 line_cursor#1 ] ) always clobbers reg byte a +Statement [29] (signed word) signed_multiply_results_compare::ma#0 ← (signed word) mulf8s::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/dword/signed dword) 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 @@ -8234,51 +8230,51 @@ Statement [89] (byte) print_byte::b#2 ← < (word) print_word::w#5 [ char_cursor Statement [96] (byte~) print_byte::$2 ← (byte) print_byte::b#5 & (byte/signed byte/word/signed word/dword/signed dword) 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:166::print_word:187::print_byte:88 [ line_cursor#10 multiply_error::ma#0 print_word::w#5 char_cursor#17 print_byte::$2 ] main:2::multiply_results_compare:13::multiply_error:166::print_word:191::print_byte:88 [ line_cursor#10 print_word::w#5 char_cursor#17 print_byte::$2 ] main:2::multiply_tables_compare:11::print_word:208::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:212::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:166::print_word:187::print_byte:90 [ line_cursor#10 multiply_error::ma#0 char_cursor#17 print_byte::$2 ] main:2::multiply_results_compare:13::multiply_error:166::print_word:191::print_byte:90 [ line_cursor#10 char_cursor#17 print_byte::$2 ] main:2::multiply_tables_compare:11::print_word:208::print_byte:90 [ multiply_tables_compare::kc_sqr#2 char_cursor#17 print_byte::$2 ] main:2::multiply_tables_compare:11::print_word:212::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:166::print_byte:179 [ line_cursor#10 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:166::print_byte:183 [ line_cursor#10 multiply_error::ms#0 multiply_error::ma#0 char_cursor#17 print_byte::$2 ] ) always clobbers reg byte a Statement [101] *((byte*) char_cursor#78) ← (byte) print_char::ch#4 [ char_cursor#78 ] ( 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#78 ] 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#78 ] 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#78 ] 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#78 ] main:2::multiply_results_compare:13::multiply_error:166::print_word:187::print_byte:88::print_char:95 [ line_cursor#10 multiply_error::ma#0 print_word::w#5 print_byte::b#5 char_cursor#78 ] main:2::multiply_results_compare:13::multiply_error:166::print_word:191::print_byte:88::print_char:95 [ line_cursor#10 print_word::w#5 print_byte::b#5 char_cursor#78 ] main:2::multiply_tables_compare:11::print_word:208::print_byte:88::print_char:95 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 print_byte::b#5 char_cursor#78 ] main:2::multiply_tables_compare:11::print_word:212::print_byte:88::print_char:95 [ print_word::w#5 print_byte::b#5 char_cursor#78 ] 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#78 ] 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#78 ] main:2::multiply_results_compare:13::multiply_error:166::print_word:187::print_byte:90::print_char:95 [ line_cursor#10 multiply_error::ma#0 print_byte::b#5 char_cursor#78 ] main:2::multiply_results_compare:13::multiply_error:166::print_word:191::print_byte:90::print_char:95 [ line_cursor#10 print_byte::b#5 char_cursor#78 ] main:2::multiply_tables_compare:11::print_word:208::print_byte:90::print_char:95 [ multiply_tables_compare::kc_sqr#2 print_byte::b#5 char_cursor#78 ] main:2::multiply_tables_compare:11::print_word:212::print_byte:90::print_char:95 [ print_byte::b#5 char_cursor#78 ] 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#78 ] 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#78 ] main:2::multiply_results_compare:13::multiply_error:166::print_byte:179::print_char:95 [ line_cursor#10 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 print_byte::b#5 char_cursor#78 ] main:2::multiply_results_compare:13::multiply_error:166::print_byte:183::print_char:95 [ line_cursor#10 multiply_error::ms#0 multiply_error::ma#0 print_byte::b#5 char_cursor#78 ] 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#78 ] 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#78 ] main:2::multiply_results_compare:13::multiply_error:166::print_word:187::print_byte:88::print_char:98 [ line_cursor#10 multiply_error::ma#0 print_word::w#5 char_cursor#78 ] main:2::multiply_results_compare:13::multiply_error:166::print_word:191::print_byte:88::print_char:98 [ line_cursor#10 print_word::w#5 char_cursor#78 ] main:2::multiply_tables_compare:11::print_word:208::print_byte:88::print_char:98 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 char_cursor#78 ] main:2::multiply_tables_compare:11::print_word:212::print_byte:88::print_char:98 [ print_word::w#5 char_cursor#78 ] 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#78 ] 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#78 ] main:2::multiply_results_compare:13::multiply_error:166::print_word:187::print_byte:90::print_char:98 [ line_cursor#10 multiply_error::ma#0 char_cursor#78 ] main:2::multiply_results_compare:13::multiply_error:166::print_word:191::print_byte:90::print_char:98 [ line_cursor#10 char_cursor#78 ] main:2::multiply_tables_compare:11::print_word:208::print_byte:90::print_char:98 [ multiply_tables_compare::kc_sqr#2 char_cursor#78 ] main:2::multiply_tables_compare:11::print_word:212::print_byte:90::print_char:98 [ char_cursor#78 ] 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#78 ] 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#78 ] main:2::multiply_results_compare:13::multiply_error:166::print_byte:179::print_char:98 [ line_cursor#10 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 char_cursor#78 ] main:2::multiply_results_compare:13::multiply_error:166::print_byte:183::print_char:98 [ line_cursor#10 multiply_error::ms#0 multiply_error::ma#0 char_cursor#78 ] 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#78 ] 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#78 ] ) 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 [120] (byte/signed byte/word/signed word/dword/signed dword~) signed_multiply::$16 ← (byte~) signed_multiply::$6 - (byte)(signed byte) signed_multiply::b#0 [ 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 [124] (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 [125] (byte/signed byte/word/signed word/dword/signed dword~) signed_multiply::$17 ← (byte~) signed_multiply::$12 - (byte)(signed byte) signed_multiply::a#0 [ 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 asm { ldamemA stasm1+1 stasm3+1 eor#$ff stasm2+1 stasm4+1 ldxmemB sec sm1: ldamul_sqr1_lo,x sm2: sbcmul_sqr2_lo,x stamemA sm3: ldamul_sqr1_hi,x sm4: sbcmul_sqr2_hi,x stamemB } always clobbers reg byte a reg byte x -Statement [133] (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:157 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply::return#0 ] ) always clobbers reg byte a -Statement [137] (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 [144] (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 [153] (word) slow_multiply::return#2 ← (word) slow_multiply::return#0 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::return#2 ] ( main:2::multiply_results_compare:13 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::return#2 ] ) always clobbers reg byte a -Statement [154] (word) multiply_results_compare::ms#0 ← (word) slow_multiply::return#2 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ) always clobbers reg byte a -Statement [158] (word) multiply::return#3 ← (word) multiply::return#0 [ line_cursor#10 char_cursor#30 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#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply::return#3 ] ) always clobbers reg byte a -Statement [159] (word) multiply_results_compare::ma#0 ← (word) multiply::return#3 [ line_cursor#10 char_cursor#30 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#10 char_cursor#30 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 [116] (word) mulf8u::return#2 ← (word) mulf8u::return#0 [ mulf8s::a#0 mulf8s::b#0 mulf8u::return#2 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::a#0 mulf8s::b#0 mulf8u::return#2 ] ) always clobbers reg byte a +Statement [117] (word) mulf8s::m#0 ← (word) mulf8u::return#2 [ mulf8s::a#0 mulf8s::b#0 mulf8s::m#0 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::a#0 mulf8s::b#0 mulf8s::m#0 ] ) always clobbers reg byte a +Statement [119] (byte~) mulf8s::$6 ← > (word) mulf8s::m#0 [ mulf8s::a#0 mulf8s::b#0 mulf8s::m#0 mulf8s::$6 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::a#0 mulf8s::b#0 mulf8s::m#0 mulf8s::$6 ] ) always clobbers reg byte a +Statement [120] (byte/signed byte/word/signed word/dword/signed dword~) mulf8s::$16 ← (byte~) mulf8s::$6 - (byte)(signed byte) mulf8s::b#0 [ mulf8s::a#0 mulf8s::b#0 mulf8s::m#0 mulf8s::$16 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::a#0 mulf8s::b#0 mulf8s::m#0 mulf8s::$16 ] ) always clobbers reg byte a +Statement [124] (byte~) mulf8s::$12 ← > (word) mulf8s::m#5 [ mulf8s::a#0 mulf8s::m#5 mulf8s::$12 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::a#0 mulf8s::m#5 mulf8s::$12 ] ) always clobbers reg byte a +Statement [125] (byte/signed byte/word/signed word/dword/signed dword~) mulf8s::$17 ← (byte~) mulf8s::$12 - (byte)(signed byte) mulf8s::a#0 [ mulf8s::m#5 mulf8s::$17 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::m#5 mulf8s::$17 ] ) always clobbers reg byte a +Statement asm { ldamemA stasm1+1 stasm3+1 eor#$ff stasm2+1 stasm4+1 ldxmemB sec sm1: ldamulf_sqr1_lo,x sm2: sbcmulf_sqr2_lo,x stamemA sm3: ldamulf_sqr1_hi,x sm4: sbcmulf_sqr2_hi,x stamemB } always clobbers reg byte a reg byte x +Statement [133] (word) mulf8u::return#0 ← *((const byte*) mulf8u::memB#0) w= *((const byte*) mulf8u::memA#0) [ mulf8u::return#0 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27::mulf8u:115 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::a#0 mulf8s::b#0 mulf8u::return#0 ] main:2::multiply_results_compare:13::mulf8u:157 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 mulf8u::return#0 ] ) always clobbers reg byte a +Statement [137] (signed word) muls8s::m#1 ← (signed word) muls8s::m#3 - (signed byte) muls8s::b#0 [ muls8s::a#0 muls8s::b#0 muls8s::i#2 muls8s::m#1 ] ( main:2::signed_multiply_results_compare:15::muls8s:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 muls8s::a#0 muls8s::b#0 muls8s::i#2 muls8s::m#1 ] ) always clobbers reg byte a +Statement [144] (signed word) muls8s::m#2 ← (signed word) muls8s::m#5 + (signed byte) muls8s::b#0 [ muls8s::a#0 muls8s::b#0 muls8s::m#2 muls8s::j#2 ] ( main:2::signed_multiply_results_compare:15::muls8s:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 muls8s::a#0 muls8s::b#0 muls8s::m#2 muls8s::j#2 ] ) always clobbers reg byte a +Statement [153] (word) muls8u::return#2 ← (word) muls8u::return#0 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 muls8u::return#2 ] ( main:2::multiply_results_compare:13 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 muls8u::return#2 ] ) always clobbers reg byte a +Statement [154] (word) multiply_results_compare::ms#0 ← (word) muls8u::return#2 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ) always clobbers reg byte a +Statement [158] (word) mulf8u::return#3 ← (word) mulf8u::return#0 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 mulf8u::return#3 ] ( main:2::multiply_results_compare:13 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 mulf8u::return#3 ] ) always clobbers reg byte a +Statement [159] (word) multiply_results_compare::ma#0 ← (word) mulf8u::return#3 [ line_cursor#10 char_cursor#30 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#10 char_cursor#30 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 [160] if((word) multiply_results_compare::ms#0==(word) multiply_results_compare::ma#0) goto multiply_results_compare::@3 [ line_cursor#10 char_cursor#30 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#10 char_cursor#30 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 [161] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 [ line_cursor#10 char_cursor#30 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#10 char_cursor#30 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] (word) multiply_error::ms#0 ← (word) multiply_results_compare::ms#0 [ line_cursor#10 char_cursor#30 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#10 char_cursor#30 multiply_results_compare::ma#0 multiply_error::a#0 multiply_error::b#0 multiply_error::ms#0 ] ) always clobbers reg byte a Statement [165] (word) multiply_error::ma#0 ← (word) multiply_results_compare::ma#0 [ line_cursor#10 char_cursor#30 multiply_error::a#0 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#10 char_cursor#30 multiply_error::a#0 multiply_error::b#0 multiply_error::ms#0 multiply_error::ma#0 ] ) always clobbers reg byte a Statement [186] (word) print_word::w#3 ← (word) multiply_error::ms#0 [ char_cursor#122 line_cursor#10 print_word::w#3 multiply_error::ma#0 ] ( main:2::multiply_results_compare:13::multiply_error:166 [ char_cursor#122 line_cursor#10 print_word::w#3 multiply_error::ma#0 ] ) always clobbers reg byte a Statement [190] (word) print_word::w#4 ← (word) multiply_error::ma#0 [ char_cursor#122 line_cursor#10 print_word::w#4 ] ( main:2::multiply_results_compare:13::multiply_error:166 [ char_cursor#122 line_cursor#10 print_word::w#4 ] ) always clobbers reg byte a -Statement [197] (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:152 [ line_cursor#10 char_cursor#30 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 [197] (word) muls8u::m#1 ← (word) muls8u::m#3 + (byte) muls8u::b#0 [ muls8u::a#0 muls8u::b#0 muls8u::i#2 muls8u::m#1 ] ( main:2::multiply_results_compare:13::muls8u:152 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 muls8u::a#0 muls8u::b#0 muls8u::i#2 muls8u::m#1 ] ) always clobbers reg byte a Statement [204] 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 [205] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 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 [207] (word~) print_word::w#9 ← (word)(byte*) multiply_tables_compare::asm_sqr#2 [ char_cursor#122 print_word::w#9 multiply_tables_compare::kc_sqr#2 ] ( main:2::multiply_tables_compare:11 [ char_cursor#122 print_word::w#9 multiply_tables_compare::kc_sqr#2 ] ) always clobbers reg byte a Statement [211] (word~) print_word::w#10 ← (word)(byte*) multiply_tables_compare::kc_sqr#2 [ char_cursor#122 print_word::w#10 ] ( main:2::multiply_tables_compare:11 [ char_cursor#122 print_word::w#10 ] ) always clobbers reg byte a -Statement [217] if((byte*) multiply_tables_compare::kc_sqr#1<(const byte[512]) mul_sqr1_lo#0+(word/signed word/dword/signed dword) 512*(byte/signed byte/word/signed word/dword/signed dword) 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 [217] if((byte*) multiply_tables_compare::kc_sqr#1<(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512*(byte/signed byte/word/signed word/dword/signed dword) 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 [222] (byte*~) char_cursor#201 ← (byte*) line_cursor#1 [ line_cursor#1 char_cursor#201 ] ( main:2::multiply_tables_compare:11 [ line_cursor#1 char_cursor#201 ] ) always clobbers reg byte a -Statement asm { ldx#$00 txa .byte$c9 lb1: tya adc#$00 ml1: staasm_mul_sqr1_hi,x tay cmp#$40 txa ror ml9: adc#$00 staml9+1 inx ml0: staasm_mul_sqr1_lo,x bnelb1 incml0+2 incml1+2 clc iny bnelb1 ldx#$00 ldy#$ff !: ldaasm_mul_sqr1_hi+1,x staasm_mul_sqr2_hi+$100,x ldaasm_mul_sqr1_hi,x staasm_mul_sqr2_hi,y ldaasm_mul_sqr1_lo+1,x staasm_mul_sqr2_lo+$100,x ldaasm_mul_sqr1_lo,x staasm_mul_sqr2_lo,y dey inx bne!- } always clobbers reg byte a reg byte x reg byte y -Statement [224] *((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 [225] *((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 [226] *((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 [227] *((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 [232] (byte~) init_multiply::$2 ← (byte) init_multiply::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 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 [237] (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 [238] *((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 [239] (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 [240] *((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 [242] (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 [244] if((byte*) init_multiply::sqr1_lo#1!=(const byte[512]) mul_sqr1_lo#0+(word/signed word/dword/signed dword) 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 [246] *((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 [247] *((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 [249] (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 [253] if((byte*) init_multiply::sqr2_lo#1!=(const byte[512]) mul_sqr2_lo#0+(word/signed word/dword/signed dword) 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 [254] *((const byte[512]) mul_sqr2_lo#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mul_sqr1_lo#0+(word/signed word/dword/signed dword) 256) [ ] ( main:2::init_multiply:7 [ ] ) always clobbers reg byte a -Statement [255] *((const byte[512]) mul_sqr2_hi#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mul_sqr1_hi#0+(word/signed word/dword/signed dword) 256) [ ] ( main:2::init_multiply:7 [ ] ) always clobbers reg byte a +Statement asm { ldx#$00 txa .byte$c9 lb1: tya adc#$00 ml1: stamula_sqr1_hi,x tay cmp#$40 txa ror ml9: adc#$00 staml9+1 inx ml0: stamula_sqr1_lo,x bnelb1 incml0+2 incml1+2 clc iny bnelb1 ldx#$00 ldy#$ff !: ldamula_sqr1_hi+1,x stamula_sqr2_hi+$100,x ldamula_sqr1_hi,x stamula_sqr2_hi,y ldamula_sqr1_lo+1,x stamula_sqr2_lo+$100,x ldamula_sqr1_lo,x stamula_sqr2_lo,y dey inx bne!- } always clobbers reg byte a reg byte x reg byte y +Statement [224] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr1_lo#0) [ ] ( main:2::mulf_init_asm:9 [ ] ) always clobbers reg byte a +Statement [225] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr1_hi#0) [ ] ( main:2::mulf_init_asm:9 [ ] ) always clobbers reg byte a +Statement [226] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr2_lo#0) [ ] ( main:2::mulf_init_asm:9 [ ] ) always clobbers reg byte a +Statement [227] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr2_hi#0) [ ] ( main:2::mulf_init_asm:9 [ ] ) always clobbers reg byte a +Statement [232] (byte~) mulf_init::$2 ← (byte) mulf_init::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 1 [ mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$2 ] ( main:2::mulf_init:7 [ mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$2 ] ) always clobbers reg byte a +Statement [237] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$5 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$5 ] ) always clobbers reg byte a +Statement [238] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ) always clobbers reg byte y +Statement [239] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$6 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$6 ] ) always clobbers reg byte a +Statement [240] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ) always clobbers reg byte y +Statement [242] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ) always clobbers reg byte a +Statement [244] if((byte*) mulf_init::sqr1_lo#1!=(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512) goto mulf_init::@1 [ mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_lo#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ( main:2::mulf_init:7 [ mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_lo#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ) always clobbers reg byte a +Statement [246] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[512]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y +Statement [247] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[512]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y +Statement [249] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ( main:2::mulf_init:7 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ) always clobbers reg byte a +Statement [253] if((byte*) mulf_init::sqr2_lo#1!=(const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) goto mulf_init::@3 [ mulf_init::x_255#1 mulf_init::sqr2_lo#1 mulf_init::sqr2_hi#1 mulf_init::dir#3 ] ( main:2::mulf_init:7 [ mulf_init::x_255#1 mulf_init::sqr2_lo#1 mulf_init::sqr2_hi#1 mulf_init::dir#3 ] ) always clobbers reg byte a +Statement [254] *((const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 256) [ ] ( main:2::mulf_init:7 [ ] ) always clobbers reg byte a +Statement [255] *((const byte[512]) mulf_sqr2_hi#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_hi#0+(word/signed word/dword/signed dword) 256) [ ] ( main:2::mulf_init:7 [ ] ) always clobbers reg byte a Statement [260] *((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 [262] if((byte*) print_cls::sc#1!=(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 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 , @@ -8291,35 +8287,35 @@ Potential registers zp ZP_BYTE:12 [ print_byte::b#5 print_byte::b#3 print_byte:: 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#78 char_cursor#129 char_cursor#128 char_cursor#124 char_cursor#141 char_cursor#30 char_cursor#123 char_cursor#17 char_cursor#122 char_cursor#176 char_cursor#180 char_cursor#1 char_cursor#126 char_cursor#201 ] : 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#4 ] : 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#4 ] : 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_WORD:17 [ mulf8s::m#4 mulf8s::m#5 mulf8s::m#1 mulf8s::m#0 mulf8s::m#2 ] : zp ZP_WORD:17 , +Potential registers zp ZP_BYTE:19 [ mulf8u::a#2 mulf8u::a#3 mulf8u::a#1 ] : zp ZP_BYTE:19 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:20 [ mulf8u::b#2 mulf8u::b#3 mulf8u::b#1 ] : zp ZP_BYTE:20 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:21 [ muls8s::i#2 muls8s::i#1 ] : zp ZP_BYTE:21 , reg byte x , reg byte y , +Potential registers zp ZP_WORD:22 [ muls8s::m#5 muls8s::return#0 muls8s::m#3 muls8s::m#1 muls8s::m#2 ] : zp ZP_WORD:22 , +Potential registers zp ZP_BYTE:24 [ muls8s::j#2 muls8s::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_BYTE:27 [ muls8u::i#2 muls8u::i#1 ] : zp ZP_BYTE:27 , reg byte x , reg byte y , +Potential registers zp ZP_WORD:28 [ muls8u::return#0 muls8u::m#3 muls8u::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_BYTE:34 [ mulf_init::c#2 mulf_init::c#1 ] : zp ZP_BYTE:34 , reg byte x , +Potential registers zp ZP_WORD:35 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] : zp ZP_WORD:35 , +Potential registers zp ZP_WORD:37 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ] : zp ZP_WORD:37 , +Potential registers zp ZP_BYTE:39 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] : zp ZP_BYTE:39 , reg byte x , +Potential registers zp ZP_WORD:40 [ mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] : zp ZP_WORD:40 , +Potential registers zp ZP_BYTE:42 [ mulf_init::x_255#2 mulf_init::x_255#1 ] : zp ZP_BYTE:42 , reg byte x , +Potential registers zp ZP_WORD:43 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] : zp ZP_WORD:43 , +Potential registers zp ZP_WORD:45 [ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] : zp ZP_WORD:45 , +Potential registers zp ZP_BYTE:47 [ mulf_init::dir#2 mulf_init::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_BYTE:50 [ muls8s::a#0 ] : zp ZP_BYTE:50 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:51 [ muls8s::b#0 ] : zp ZP_BYTE:51 , reg byte x , reg byte y , +Potential registers zp ZP_WORD:52 [ muls8s::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_BYTE:56 [ mulf8s::a#0 ] : zp ZP_BYTE:56 , reg byte y , +Potential registers zp ZP_BYTE:57 [ mulf8s::b#0 ] : zp ZP_BYTE:57 , reg byte y , +Potential registers zp ZP_WORD:58 [ mulf8s::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 , @@ -8327,34 +8323,34 @@ Potential registers zp ZP_WORD:64 [ signed_multiply_error::ms#0 ] : zp ZP_WORD:6 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::$16 ] : zp ZP_BYTE:73 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:74 [ signed_multiply::$12 ] : zp ZP_BYTE:74 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:75 [ signed_multiply::$17 ] : zp ZP_BYTE:75 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:76 [ multiply::return#0 ] : zp ZP_WORD:76 , -Potential registers zp ZP_BYTE:78 [ slow_multiply::a#0 ] : zp ZP_BYTE:78 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:79 [ slow_multiply::b#0 ] : zp ZP_BYTE:79 , reg byte x , reg byte y , -Potential registers zp ZP_WORD:80 [ slow_multiply::return#2 ] : zp ZP_WORD:80 , +Potential registers zp ZP_WORD:70 [ mulf8u::return#2 ] : zp ZP_WORD:70 , +Potential registers zp ZP_BYTE:72 [ mulf8s::$6 ] : zp ZP_BYTE:72 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:73 [ mulf8s::$16 ] : zp ZP_BYTE:73 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:74 [ mulf8s::$12 ] : zp ZP_BYTE:74 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:75 [ mulf8s::$17 ] : zp ZP_BYTE:75 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:76 [ mulf8u::return#0 ] : zp ZP_WORD:76 , +Potential registers zp ZP_BYTE:78 [ muls8u::a#0 ] : zp ZP_BYTE:78 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:79 [ muls8u::b#0 ] : zp ZP_BYTE:79 , reg byte x , reg byte y , +Potential registers zp ZP_WORD:80 [ muls8u::return#2 ] : zp ZP_WORD:80 , Potential registers zp ZP_WORD:82 [ multiply_results_compare::ms#0 ] : zp ZP_WORD:82 , -Potential registers zp ZP_WORD:84 [ multiply::return#3 ] : zp ZP_WORD:84 , +Potential registers zp ZP_WORD:84 [ mulf8u::return#3 ] : zp ZP_WORD:84 , Potential registers zp ZP_WORD:86 [ multiply_results_compare::ma#0 ] : zp ZP_WORD:86 , Potential registers zp ZP_BYTE:88 [ multiply_error::a#0 ] : zp ZP_BYTE:88 , reg byte x , Potential registers zp ZP_BYTE:89 [ multiply_error::b#0 ] : zp ZP_BYTE:89 , reg byte x , Potential registers zp ZP_WORD:90 [ multiply_error::ms#0 ] : zp ZP_WORD:90 , Potential registers zp ZP_WORD:92 [ multiply_error::ma#0 ] : zp ZP_WORD:92 , -Potential registers zp ZP_BYTE:94 [ init_multiply::$2 ] : zp ZP_BYTE:94 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:95 [ init_multiply::$5 ] : zp ZP_BYTE:95 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:96 [ init_multiply::$6 ] : zp ZP_BYTE:96 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:94 [ mulf_init::$2 ] : zp ZP_BYTE:94 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:95 [ mulf_init::$5 ] : zp ZP_BYTE:95 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:96 [ mulf_init::$6 ] : zp ZP_BYTE:96 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -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:80 [ slow_multiply::return#2 ] 183.67: zp ZP_BYTE:79 [ slow_multiply::b#0 ] 157.71: zp ZP_BYTE:78 [ slow_multiply::a#0 ] -Uplift Scope [multiply] 258.5: zp ZP_BYTE:20 [ multiply::b#2 multiply::b#1 multiply::b#4 ] 208: zp ZP_BYTE:19 [ multiply::a#2 multiply::a#1 multiply::a#4 ] 202: zp ZP_WORD:84 [ multiply::return#3 ] 26.25: zp ZP_WORD:76 [ multiply::return#0 ] 4: zp ZP_WORD:70 [ multiply::return#2 ] +Uplift Scope [muls8s] 6,707: zp ZP_WORD:22 [ muls8s::m#5 muls8s::return#0 muls8s::m#3 muls8s::m#1 muls8s::m#2 ] 2,502.5: zp ZP_BYTE:21 [ muls8s::i#2 muls8s::i#1 ] 2,502.5: zp ZP_BYTE:24 [ muls8s::j#2 muls8s::j#1 ] 202: zp ZP_WORD:52 [ muls8s::return#2 ] 191.18: zp ZP_BYTE:51 [ muls8s::b#0 ] 175.58: zp ZP_BYTE:50 [ muls8s::a#0 ] +Uplift Scope [muls8u] 3,370.33: zp ZP_WORD:28 [ muls8u::return#0 muls8u::m#3 muls8u::m#1 ] 2,502.5: zp ZP_BYTE:27 [ muls8u::i#2 muls8u::i#1 ] 202: zp ZP_WORD:80 [ muls8u::return#2 ] 183.67: zp ZP_BYTE:79 [ muls8u::b#0 ] 157.71: zp ZP_BYTE:78 [ muls8u::a#0 ] +Uplift Scope [mulf8u] 258.5: zp ZP_BYTE:20 [ mulf8u::b#2 mulf8u::b#3 mulf8u::b#1 ] 208: zp ZP_BYTE:19 [ mulf8u::a#2 mulf8u::a#3 mulf8u::a#1 ] 202: zp ZP_WORD:84 [ mulf8u::return#3 ] 26.25: zp ZP_WORD:76 [ mulf8u::return#0 ] 4: zp ZP_WORD:70 [ mulf8u::return#2 ] 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:86 [ 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:82 [ 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:94 [ init_multiply::$2 ] 22: zp ZP_BYTE:95 [ init_multiply::$5 ] 22: zp ZP_BYTE:96 [ 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 [signed_multiply] 202: zp ZP_WORD:58 [ signed_multiply::return#2 ] 13.83: zp ZP_WORD:17 [ signed_multiply::m#4 signed_multiply::m#5 signed_multiply::m#1 signed_multiply::m#0 signed_multiply::m#2 ] 9.36: zp ZP_BYTE:57 [ signed_multiply::b#0 ] 7.36: zp ZP_BYTE:56 [ signed_multiply::a#0 ] 4: zp ZP_BYTE:72 [ signed_multiply::$6 ] 4: zp ZP_BYTE:73 [ signed_multiply::$16 ] 4: zp ZP_BYTE:74 [ signed_multiply::$12 ] 4: zp ZP_BYTE:75 [ signed_multiply::$17 ] +Uplift Scope [mulf_init] 45.1: zp ZP_WORD:40 [ mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] 24.36: zp ZP_BYTE:34 [ mulf_init::c#2 mulf_init::c#1 ] 24.14: zp ZP_BYTE:39 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] 22: zp ZP_BYTE:94 [ mulf_init::$2 ] 22: zp ZP_BYTE:95 [ mulf_init::$5 ] 22: zp ZP_BYTE:96 [ mulf_init::$6 ] 20.62: zp ZP_WORD:43 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] 19.04: zp ZP_WORD:35 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] 16.5: zp ZP_BYTE:42 [ mulf_init::x_255#2 mulf_init::x_255#1 ] 14.14: zp ZP_WORD:45 [ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] 12.05: zp ZP_BYTE:47 [ mulf_init::dir#2 mulf_init::dir#3 ] 8.5: zp ZP_WORD:37 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ] +Uplift Scope [mulf8s] 202: zp ZP_WORD:58 [ mulf8s::return#2 ] 13.83: zp ZP_WORD:17 [ mulf8s::m#4 mulf8s::m#5 mulf8s::m#1 mulf8s::m#0 mulf8s::m#2 ] 9.36: zp ZP_BYTE:57 [ mulf8s::b#0 ] 7.36: zp ZP_BYTE:56 [ mulf8s::a#0 ] 4: zp ZP_BYTE:72 [ mulf8s::$6 ] 4: zp ZP_BYTE:73 [ mulf8s::$16 ] 4: zp ZP_BYTE:74 [ mulf8s::$12 ] 4: zp ZP_BYTE:75 [ mulf8s::$17 ] Uplift Scope [] 77.01: zp ZP_WORD:14 [ char_cursor#78 char_cursor#129 char_cursor#128 char_cursor#124 char_cursor#141 char_cursor#30 char_cursor#123 char_cursor#17 char_cursor#122 char_cursor#176 char_cursor#180 char_cursor#1 char_cursor#126 char_cursor#201 ] 34.95: zp ZP_WORD:4 [ line_cursor#23 line_cursor#45 line_cursor#10 line_cursor#1 ] Uplift Scope [multiply_tables_compare] 20.17: zp ZP_WORD:30 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::kc_sqr#1 ] 15.58: 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 ] @@ -8368,15 +8364,15 @@ Uplift Scope [multiply_error] 0.67: zp ZP_BYTE:88 [ multiply_error::a#0 ] 0.44: 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] +Uplift Scope [mulf_init_asm] -Uplifting [slow_signed_multiply] best 214499 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 204199 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:80 [ slow_multiply::return#2 ] reg byte x [ slow_multiply::b#0 ] zp ZP_BYTE:78 [ slow_multiply::a#0 ] -Uplifting [multiply] best 203587 combination reg byte x [ multiply::b#2 multiply::b#1 multiply::b#4 ] reg byte a [ multiply::a#2 multiply::a#1 multiply::a#4 ] zp ZP_WORD:84 [ multiply::return#3 ] zp ZP_WORD:76 [ multiply::return#0 ] zp ZP_WORD:70 [ multiply::return#2 ] +Uplifting [muls8s] best 214499 combination zp ZP_WORD:22 [ muls8s::m#5 muls8s::return#0 muls8s::m#3 muls8s::m#1 muls8s::m#2 ] reg byte y [ muls8s::i#2 muls8s::i#1 ] reg byte y [ muls8s::j#2 muls8s::j#1 ] zp ZP_WORD:52 [ muls8s::return#2 ] reg byte x [ muls8s::b#0 ] zp ZP_BYTE:50 [ muls8s::a#0 ] +Uplifting [muls8u] best 204199 combination zp ZP_WORD:28 [ muls8u::return#0 muls8u::m#3 muls8u::m#1 ] reg byte y [ muls8u::i#2 muls8u::i#1 ] zp ZP_WORD:80 [ muls8u::return#2 ] reg byte x [ muls8u::b#0 ] zp ZP_BYTE:78 [ muls8u::a#0 ] +Uplifting [mulf8u] best 203587 combination reg byte x [ mulf8u::b#2 mulf8u::b#3 mulf8u::b#1 ] reg byte a [ mulf8u::a#2 mulf8u::a#3 mulf8u::a#1 ] zp ZP_WORD:84 [ mulf8u::return#3 ] zp ZP_WORD:76 [ mulf8u::return#0 ] zp ZP_WORD:70 [ mulf8u::return#2 ] Uplifting [multiply_results_compare] best 203587 combination zp ZP_BYTE:26 [ multiply_results_compare::b#2 multiply_results_compare::b#1 ] zp ZP_WORD:86 [ multiply_results_compare::ma#0 ] zp ZP_BYTE:25 [ multiply_results_compare::a#6 multiply_results_compare::a#1 ] zp ZP_WORD:82 [ multiply_results_compare::ms#0 ] Uplifting [signed_multiply_results_compare] best 203587 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 203237 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 [signed_multiply] best 202912 combination zp ZP_WORD:58 [ signed_multiply::return#2 ] 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_BYTE:57 [ signed_multiply::b#0 ] reg byte y [ signed_multiply::a#0 ] reg byte a [ signed_multiply::$6 ] reg byte a [ signed_multiply::$16 ] reg byte a [ signed_multiply::$12 ] reg byte a [ signed_multiply::$17 ] +Uplifting [mulf_init] best 203237 combination zp ZP_WORD:40 [ mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] reg byte x [ mulf_init::c#2 mulf_init::c#1 ] zp ZP_BYTE:39 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] reg byte a [ mulf_init::$2 ] reg byte a [ mulf_init::$5 ] reg byte a [ mulf_init::$6 ] zp ZP_WORD:43 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] zp ZP_WORD:35 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] reg byte x [ mulf_init::x_255#2 mulf_init::x_255#1 ] zp ZP_WORD:45 [ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] zp ZP_BYTE:47 [ mulf_init::dir#2 mulf_init::dir#3 ] zp ZP_WORD:37 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ] +Uplifting [mulf8s] best 202912 combination zp ZP_WORD:58 [ mulf8s::return#2 ] zp ZP_WORD:17 [ mulf8s::m#4 mulf8s::m#5 mulf8s::m#1 mulf8s::m#0 mulf8s::m#2 ] zp ZP_BYTE:57 [ mulf8s::b#0 ] reg byte y [ mulf8s::a#0 ] reg byte a [ mulf8s::$6 ] reg byte a [ mulf8s::$16 ] reg byte a [ mulf8s::$12 ] reg byte a [ mulf8s::$17 ] Uplifting [] best 202912 combination zp ZP_WORD:14 [ char_cursor#78 char_cursor#129 char_cursor#128 char_cursor#124 char_cursor#141 char_cursor#30 char_cursor#123 char_cursor#17 char_cursor#122 char_cursor#176 char_cursor#180 char_cursor#1 char_cursor#126 char_cursor#201 ] zp ZP_WORD:4 [ line_cursor#23 line_cursor#45 line_cursor#10 line_cursor#1 ] Uplifting [multiply_tables_compare] best 202912 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 202912 combination zp ZP_WORD:6 [ print_str::str#14 print_str::str#16 print_str::str#0 ] @@ -8390,65 +8386,65 @@ Uplifting [multiply_error] best 202856 combination reg byte x [ multiply_error:: Uplifting [signed_multiply_error] best 202850 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 202850 combination Uplifting [main] best 202850 combination -Uplifting [init_multiply_asm] best 202850 combination +Uplifting [mulf_init_asm] best 202850 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 202850 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 202850 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 202850 combination zp ZP_BYTE:50 [ slow_signed_multiply::a#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:78 [ slow_multiply::a#0 ] -Uplifting [slow_multiply] best 202850 combination zp ZP_BYTE:78 [ slow_multiply::a#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:50 [ muls8s::a#0 ] +Uplifting [muls8s] best 202850 combination zp ZP_BYTE:50 [ muls8s::a#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:78 [ muls8u::a#0 ] +Uplifting [muls8u] best 202850 combination zp ZP_BYTE:78 [ muls8u::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 202850 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 202850 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 202850 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 202850 combination zp ZP_BYTE:47 [ init_multiply::dir#2 init_multiply::dir#3 ] -Attempting to uplift remaining variables inzp ZP_BYTE:57 [ signed_multiply::b#0 ] -Uplifting [signed_multiply] best 202850 combination zp ZP_BYTE:57 [ signed_multiply::b#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:39 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] +Uplifting [mulf_init] best 202850 combination zp ZP_BYTE:39 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:47 [ mulf_init::dir#2 mulf_init::dir#3 ] +Uplifting [mulf_init] best 202850 combination zp ZP_BYTE:47 [ mulf_init::dir#2 mulf_init::dir#3 ] +Attempting to uplift remaining variables inzp ZP_BYTE:57 [ mulf8s::b#0 ] +Uplifting [mulf8s] best 202850 combination zp ZP_BYTE:57 [ mulf8s::b#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:63 [ signed_multiply_error::b#0 ] Uplifting [signed_multiply_error] best 202850 combination zp ZP_BYTE:63 [ signed_multiply_error::b#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:89 [ multiply_error::b#0 ] Uplifting [multiply_error] best 202850 combination zp ZP_BYTE:89 [ 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:50 [ slow_signed_multiply::a#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:57 [ signed_multiply::b#0 ] ] -Coalescing zero page register [ zp ZP_BYTE:3 [ signed_multiply_results_compare::b#2 signed_multiply_results_compare::b#1 signed_multiply::b#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 ] ] with [ zp ZP_BYTE:50 [ muls8s::a#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:57 [ mulf8s::b#0 ] ] +Coalescing zero page register [ zp ZP_BYTE:3 [ signed_multiply_results_compare::b#2 signed_multiply_results_compare::b#1 mulf8s::b#0 ] ] with [ zp ZP_BYTE:63 [ signed_multiply_error::b#0 ] ] Coalescing zero page register [ zp ZP_WORD:8 [ 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#9 print_word::w#10 print_word::w#11 ] ] Coalescing zero page register [ zp ZP_WORD:8 [ 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#9 print_word::w#10 print_word::w#11 ] ] with [ zp ZP_WORD:32 [ multiply_tables_compare::asm_sqr#2 multiply_tables_compare::asm_sqr#1 ] ] Coalescing zero page register [ zp ZP_WORD:8 [ 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#9 print_word::w#10 print_word::w#11 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:8 [ 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#9 print_word::w#10 print_word::w#11 multiply_tables_compare::asm_sqr#2 multiply_tables_compare::asm_sqr#1 signed_multiply_error::ms#0 ] ] with [ zp ZP_WORD:54 [ signed_multiply_results_compare::ms#0 ] ] -Coalescing zero page register [ zp ZP_WORD:8 [ 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#9 print_word::w#10 print_word::w#11 multiply_tables_compare::asm_sqr#2 multiply_tables_compare::asm_sqr#1 signed_multiply_error::ms#0 signed_multiply_results_compare::ms#0 ] ] with [ zp ZP_WORD:52 [ slow_signed_multiply::return#2 ] ] -Coalescing zero page register [ zp ZP_WORD:8 [ 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#9 print_word::w#10 print_word::w#11 multiply_tables_compare::asm_sqr#2 multiply_tables_compare::asm_sqr#1 signed_multiply_error::ms#0 signed_multiply_results_compare::ms#0 slow_signed_multiply::return#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:8 [ 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#9 print_word::w#10 print_word::w#11 multiply_tables_compare::asm_sqr#2 multiply_tables_compare::asm_sqr#1 signed_multiply_error::ms#0 signed_multiply_results_compare::ms#0 slow_signed_multiply::return#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:90 [ multiply_error::ms#0 ] ] -Coalescing zero page register [ zp ZP_WORD:8 [ 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#9 print_word::w#10 print_word::w#11 multiply_tables_compare::asm_sqr#2 multiply_tables_compare::asm_sqr#1 signed_multiply_error::ms#0 signed_multiply_results_compare::ms#0 slow_signed_multiply::return#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 multiply_error::ms#0 ] ] with [ zp ZP_WORD:82 [ multiply_results_compare::ms#0 ] ] -Coalescing zero page register [ zp ZP_WORD:8 [ 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#9 print_word::w#10 print_word::w#11 multiply_tables_compare::asm_sqr#2 multiply_tables_compare::asm_sqr#1 signed_multiply_error::ms#0 signed_multiply_results_compare::ms#0 slow_signed_multiply::return#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 multiply_error::ms#0 multiply_results_compare::ms#0 ] ] with [ zp ZP_WORD:80 [ slow_multiply::return#2 ] ] -Coalescing zero page register [ zp ZP_WORD:8 [ 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#9 print_word::w#10 print_word::w#11 multiply_tables_compare::asm_sqr#2 multiply_tables_compare::asm_sqr#1 signed_multiply_error::ms#0 signed_multiply_results_compare::ms#0 slow_signed_multiply::return#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 multiply_error::ms#0 multiply_results_compare::ms#0 slow_multiply::return#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:17 [ signed_multiply::m#4 signed_multiply::m#5 signed_multiply::m#1 signed_multiply::m#0 signed_multiply::m#2 ] ] with [ zp ZP_WORD:58 [ signed_multiply::return#2 ] ] -Coalescing zero page register [ zp ZP_WORD:17 [ signed_multiply::m#4 signed_multiply::m#5 signed_multiply::m#1 signed_multiply::m#0 signed_multiply::m#2 signed_multiply::return#2 ] ] with [ zp ZP_WORD:60 [ signed_multiply_results_compare::ma#0 ] ] -Coalescing zero page register [ zp ZP_WORD:17 [ signed_multiply::m#4 signed_multiply::m#5 signed_multiply::m#1 signed_multiply::m#0 signed_multiply::m#2 signed_multiply::return#2 signed_multiply_results_compare::ma#0 ] ] with [ zp ZP_WORD:66 [ signed_multiply_error::ma#0 ] ] -Coalescing zero page register [ zp ZP_WORD:17 [ signed_multiply::m#4 signed_multiply::m#5 signed_multiply::m#1 signed_multiply::m#0 signed_multiply::m#2 signed_multiply::return#2 signed_multiply_results_compare::ma#0 signed_multiply_error::ma#0 ] ] with [ zp ZP_WORD:70 [ multiply::return#2 ] ] -Coalescing zero page register [ zp ZP_WORD:17 [ signed_multiply::m#4 signed_multiply::m#5 signed_multiply::m#1 signed_multiply::m#0 signed_multiply::m#2 signed_multiply::return#2 signed_multiply_results_compare::ma#0 signed_multiply_error::ma#0 multiply::return#2 ] ] with [ zp ZP_WORD:76 [ multiply::return#0 ] ] -Coalescing zero page register [ zp ZP_WORD:17 [ signed_multiply::m#4 signed_multiply::m#5 signed_multiply::m#1 signed_multiply::m#0 signed_multiply::m#2 signed_multiply::return#2 signed_multiply_results_compare::ma#0 signed_multiply_error::ma#0 multiply::return#2 multiply::return#0 ] ] with [ zp ZP_WORD:84 [ multiply::return#3 ] ] -Coalescing zero page register [ zp ZP_WORD:17 [ signed_multiply::m#4 signed_multiply::m#5 signed_multiply::m#1 signed_multiply::m#0 signed_multiply::m#2 signed_multiply::return#2 signed_multiply_results_compare::ma#0 signed_multiply_error::ma#0 multiply::return#2 multiply::return#0 multiply::return#3 ] ] with [ zp ZP_WORD:86 [ multiply_results_compare::ma#0 ] ] -Coalescing zero page register [ zp ZP_WORD:17 [ signed_multiply::m#4 signed_multiply::m#5 signed_multiply::m#1 signed_multiply::m#0 signed_multiply::m#2 signed_multiply::return#2 signed_multiply_results_compare::ma#0 signed_multiply_error::ma#0 multiply::return#2 multiply::return#0 multiply::return#3 multiply_results_compare::ma#0 ] ] with [ zp ZP_WORD:92 [ multiply_error::ma#0 ] ] -Coalescing zero page register [ zp ZP_BYTE:25 [ multiply_results_compare::a#6 multiply_results_compare::a#1 ] ] with [ zp ZP_BYTE:78 [ slow_multiply::a#0 ] ] +Coalescing zero page register [ zp ZP_WORD:8 [ 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#9 print_word::w#10 print_word::w#11 multiply_tables_compare::asm_sqr#2 multiply_tables_compare::asm_sqr#1 signed_multiply_error::ms#0 signed_multiply_results_compare::ms#0 ] ] with [ zp ZP_WORD:52 [ muls8s::return#2 ] ] +Coalescing zero page register [ zp ZP_WORD:8 [ 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#9 print_word::w#10 print_word::w#11 multiply_tables_compare::asm_sqr#2 multiply_tables_compare::asm_sqr#1 signed_multiply_error::ms#0 signed_multiply_results_compare::ms#0 muls8s::return#2 ] ] with [ zp ZP_WORD:22 [ muls8s::m#5 muls8s::return#0 muls8s::m#3 muls8s::m#1 muls8s::m#2 ] ] +Coalescing zero page register [ zp ZP_WORD:8 [ 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#9 print_word::w#10 print_word::w#11 multiply_tables_compare::asm_sqr#2 multiply_tables_compare::asm_sqr#1 signed_multiply_error::ms#0 signed_multiply_results_compare::ms#0 muls8s::return#2 muls8s::m#5 muls8s::return#0 muls8s::m#3 muls8s::m#1 muls8s::m#2 ] ] with [ zp ZP_WORD:90 [ multiply_error::ms#0 ] ] +Coalescing zero page register [ zp ZP_WORD:8 [ 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#9 print_word::w#10 print_word::w#11 multiply_tables_compare::asm_sqr#2 multiply_tables_compare::asm_sqr#1 signed_multiply_error::ms#0 signed_multiply_results_compare::ms#0 muls8s::return#2 muls8s::m#5 muls8s::return#0 muls8s::m#3 muls8s::m#1 muls8s::m#2 multiply_error::ms#0 ] ] with [ zp ZP_WORD:82 [ multiply_results_compare::ms#0 ] ] +Coalescing zero page register [ zp ZP_WORD:8 [ 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#9 print_word::w#10 print_word::w#11 multiply_tables_compare::asm_sqr#2 multiply_tables_compare::asm_sqr#1 signed_multiply_error::ms#0 signed_multiply_results_compare::ms#0 muls8s::return#2 muls8s::m#5 muls8s::return#0 muls8s::m#3 muls8s::m#1 muls8s::m#2 multiply_error::ms#0 multiply_results_compare::ms#0 ] ] with [ zp ZP_WORD:80 [ muls8u::return#2 ] ] +Coalescing zero page register [ zp ZP_WORD:8 [ 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#9 print_word::w#10 print_word::w#11 multiply_tables_compare::asm_sqr#2 multiply_tables_compare::asm_sqr#1 signed_multiply_error::ms#0 signed_multiply_results_compare::ms#0 muls8s::return#2 muls8s::m#5 muls8s::return#0 muls8s::m#3 muls8s::m#1 muls8s::m#2 multiply_error::ms#0 multiply_results_compare::ms#0 muls8u::return#2 ] ] with [ zp ZP_WORD:28 [ muls8u::return#0 muls8u::m#3 muls8u::m#1 ] ] +Coalescing zero page register [ zp ZP_WORD:17 [ mulf8s::m#4 mulf8s::m#5 mulf8s::m#1 mulf8s::m#0 mulf8s::m#2 ] ] with [ zp ZP_WORD:58 [ mulf8s::return#2 ] ] +Coalescing zero page register [ zp ZP_WORD:17 [ mulf8s::m#4 mulf8s::m#5 mulf8s::m#1 mulf8s::m#0 mulf8s::m#2 mulf8s::return#2 ] ] with [ zp ZP_WORD:60 [ signed_multiply_results_compare::ma#0 ] ] +Coalescing zero page register [ zp ZP_WORD:17 [ mulf8s::m#4 mulf8s::m#5 mulf8s::m#1 mulf8s::m#0 mulf8s::m#2 mulf8s::return#2 signed_multiply_results_compare::ma#0 ] ] with [ zp ZP_WORD:66 [ signed_multiply_error::ma#0 ] ] +Coalescing zero page register [ zp ZP_WORD:17 [ mulf8s::m#4 mulf8s::m#5 mulf8s::m#1 mulf8s::m#0 mulf8s::m#2 mulf8s::return#2 signed_multiply_results_compare::ma#0 signed_multiply_error::ma#0 ] ] with [ zp ZP_WORD:70 [ mulf8u::return#2 ] ] +Coalescing zero page register [ zp ZP_WORD:17 [ mulf8s::m#4 mulf8s::m#5 mulf8s::m#1 mulf8s::m#0 mulf8s::m#2 mulf8s::return#2 signed_multiply_results_compare::ma#0 signed_multiply_error::ma#0 mulf8u::return#2 ] ] with [ zp ZP_WORD:76 [ mulf8u::return#0 ] ] +Coalescing zero page register [ zp ZP_WORD:17 [ mulf8s::m#4 mulf8s::m#5 mulf8s::m#1 mulf8s::m#0 mulf8s::m#2 mulf8s::return#2 signed_multiply_results_compare::ma#0 signed_multiply_error::ma#0 mulf8u::return#2 mulf8u::return#0 ] ] with [ zp ZP_WORD:84 [ mulf8u::return#3 ] ] +Coalescing zero page register [ zp ZP_WORD:17 [ mulf8s::m#4 mulf8s::m#5 mulf8s::m#1 mulf8s::m#0 mulf8s::m#2 mulf8s::return#2 signed_multiply_results_compare::ma#0 signed_multiply_error::ma#0 mulf8u::return#2 mulf8u::return#0 mulf8u::return#3 ] ] with [ zp ZP_WORD:86 [ multiply_results_compare::ma#0 ] ] +Coalescing zero page register [ zp ZP_WORD:17 [ mulf8s::m#4 mulf8s::m#5 mulf8s::m#1 mulf8s::m#0 mulf8s::m#2 mulf8s::return#2 signed_multiply_results_compare::ma#0 signed_multiply_error::ma#0 mulf8u::return#2 mulf8u::return#0 mulf8u::return#3 multiply_results_compare::ma#0 ] ] with [ zp ZP_WORD:92 [ multiply_error::ma#0 ] ] +Coalescing zero page register [ zp ZP_BYTE:25 [ multiply_results_compare::a#6 multiply_results_compare::a#1 ] ] with [ zp ZP_BYTE:78 [ muls8u::a#0 ] ] Coalescing zero page register [ zp ZP_BYTE:26 [ multiply_results_compare::b#2 multiply_results_compare::b#1 ] ] with [ zp ZP_BYTE:89 [ multiply_error::b#0 ] ] -Coalescing zero page register [ zp ZP_BYTE:2 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::a#1 slow_signed_multiply::a#0 ] ] with [ zp ZP_BYTE:25 [ multiply_results_compare::a#6 multiply_results_compare::a#1 slow_multiply::a#0 ] ] -Coalescing zero page register [ zp ZP_BYTE:2 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::a#1 slow_signed_multiply::a#0 multiply_results_compare::a#6 multiply_results_compare::a#1 slow_multiply::a#0 ] ] 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 slow_signed_multiply::a#0 multiply_results_compare::a#6 multiply_results_compare::a#1 slow_multiply::a#0 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:3 [ signed_multiply_results_compare::b#2 signed_multiply_results_compare::b#1 signed_multiply::b#0 signed_multiply_error::b#0 ] ] with [ zp ZP_BYTE:26 [ multiply_results_compare::b#2 multiply_results_compare::b#1 multiply_error::b#0 ] ] +Coalescing zero page register [ zp ZP_BYTE:2 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::a#1 muls8s::a#0 ] ] with [ zp ZP_BYTE:25 [ multiply_results_compare::a#6 multiply_results_compare::a#1 muls8u::a#0 ] ] +Coalescing zero page register [ zp ZP_BYTE:2 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::a#1 muls8s::a#0 multiply_results_compare::a#6 multiply_results_compare::a#1 muls8u::a#0 ] ] with [ zp ZP_BYTE:39 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:2 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::a#1 muls8s::a#0 multiply_results_compare::a#6 multiply_results_compare::a#1 muls8u::a#0 mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] ] with [ zp ZP_BYTE:47 [ mulf_init::dir#2 mulf_init::dir#3 ] ] +Coalescing zero page register [ zp ZP_BYTE:3 [ signed_multiply_results_compare::b#2 signed_multiply_results_compare::b#1 mulf8s::b#0 signed_multiply_error::b#0 ] ] with [ zp ZP_BYTE:26 [ multiply_results_compare::b#2 multiply_results_compare::b#1 multiply_error::b#0 ] ] Coalescing zero page register [ zp ZP_WORD:4 [ line_cursor#23 line_cursor#45 line_cursor#10 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#23 line_cursor#45 line_cursor#10 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#23 line_cursor#45 line_cursor#10 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#23 line_cursor#45 line_cursor#10 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: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 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:8 [ 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#9 print_word::w#10 print_word::w#11 multiply_tables_compare::asm_sqr#2 multiply_tables_compare::asm_sqr#1 signed_multiply_error::ms#0 signed_multiply_results_compare::ms#0 slow_signed_multiply::return#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 multiply_error::ms#0 multiply_results_compare::ms#0 slow_multiply::return#2 slow_multiply::return#0 slow_multiply::m#3 slow_multiply::m#1 ] ] 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:4 [ line_cursor#23 line_cursor#45 line_cursor#10 line_cursor#1 multiply_tables_compare::kc_sqr#2 multiply_tables_compare::kc_sqr#1 ] ] with [ zp ZP_WORD:35 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] ] +Coalescing zero page register [ zp ZP_WORD:4 [ line_cursor#23 line_cursor#45 line_cursor#10 line_cursor#1 multiply_tables_compare::kc_sqr#2 multiply_tables_compare::kc_sqr#1 mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] ] with [ zp ZP_WORD:43 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] ] +Coalescing zero page register [ zp ZP_WORD:4 [ line_cursor#23 line_cursor#45 line_cursor#10 line_cursor#1 multiply_tables_compare::kc_sqr#2 multiply_tables_compare::kc_sqr#1 mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 mulf_init::sqr2_lo#2 mulf_init::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:37 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ] ] +Coalescing zero page register [ zp ZP_WORD:6 [ print_str::str#14 print_str::str#16 print_str::str#0 mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ] ] with [ zp ZP_WORD:45 [ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] ] +Coalescing zero page register [ zp ZP_WORD:8 [ 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#9 print_word::w#10 print_word::w#11 multiply_tables_compare::asm_sqr#2 multiply_tables_compare::asm_sqr#1 signed_multiply_error::ms#0 signed_multiply_results_compare::ms#0 muls8s::return#2 muls8s::m#5 muls8s::return#0 muls8s::m#3 muls8s::m#1 muls8s::m#2 multiply_error::ms#0 multiply_results_compare::ms#0 muls8u::return#2 muls8u::return#0 muls8u::m#3 muls8u::m#1 ] ] with [ zp ZP_WORD:40 [ mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] ] Allocated (was zp ZP_WORD:14) zp ZP_WORD:10 [ char_cursor#78 char_cursor#129 char_cursor#128 char_cursor#124 char_cursor#141 char_cursor#30 char_cursor#123 char_cursor#17 char_cursor#122 char_cursor#176 char_cursor#180 char_cursor#1 char_cursor#126 char_cursor#201 ] -Allocated (was zp ZP_WORD:17) zp ZP_WORD:12 [ signed_multiply::m#4 signed_multiply::m#5 signed_multiply::m#1 signed_multiply::m#0 signed_multiply::m#2 signed_multiply::return#2 signed_multiply_results_compare::ma#0 signed_multiply_error::ma#0 multiply::return#2 multiply::return#0 multiply::return#3 multiply_results_compare::ma#0 multiply_error::ma#0 ] +Allocated (was zp ZP_WORD:17) zp ZP_WORD:12 [ mulf8s::m#4 mulf8s::m#5 mulf8s::m#1 mulf8s::m#0 mulf8s::m#2 mulf8s::return#2 signed_multiply_results_compare::ma#0 signed_multiply_error::ma#0 mulf8u::return#2 mulf8u::return#0 mulf8u::return#3 multiply_results_compare::ma#0 multiply_error::ma#0 ] ASSEMBLER BEFORE OPTIMIZATION //SEG0 Basic Upstart @@ -8488,17 +8484,17 @@ main: { jmp b1 //SEG13 main::@1 b1: - //SEG14 [7] call init_multiply param-assignment [ ] ( main:2 [ ] ) - //SEG15 [229] phi from main::@1 to init_multiply [phi:main::@1->init_multiply] - init_multiply_from_b1: - jsr init_multiply + //SEG14 [7] call mulf_init param-assignment [ ] ( main:2 [ ] ) + //SEG15 [229] phi from main::@1 to mulf_init [phi:main::@1->mulf_init] + mulf_init_from_b1: + jsr mulf_init //SEG16 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: jmp b2 //SEG17 main::@2 b2: - //SEG18 [9] call init_multiply_asm param-assignment [ ] ( main:2 [ ] ) - jsr init_multiply_asm + //SEG18 [9] call mulf_init_asm param-assignment [ ] ( main:2 [ ] ) + jsr mulf_init_asm //SEG19 [10] phi from main::@2 to main::@3 [phi:main::@2->main::@3] b3_from_b2: jmp b3 @@ -8562,32 +8558,32 @@ signed_multiply_results_compare: { jmp b2 //SEG43 signed_multiply_results_compare::@2 b2: - //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 + //SEG44 [20] (signed byte) muls8s::a#0 ← (signed byte) signed_multiply_results_compare::a#6 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 muls8s::a#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 muls8s::a#0 line_cursor#1 ] ) + // (signed byte) muls8s::a#0 = (signed byte) signed_multiply_results_compare::a#6 // register copy zp ZP_BYTE:2 + //SEG45 [21] (signed byte) muls8s::b#0 ← (signed byte) signed_multiply_results_compare::b#2 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 muls8s::a#0 muls8s::b#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 muls8s::a#0 muls8s::b#0 line_cursor#1 ] ) -- vbsxx=vbsz1 ldx 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 ] ) - // (signed word) slow_signed_multiply::return#2 = (signed word) slow_signed_multiply::return#0 // register copy zp ZP_WORD:8 + //SEG46 [22] call muls8s param-assignment [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 muls8s::return#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 muls8s::return#0 line_cursor#1 ] ) + jsr muls8s + //SEG47 [23] (signed word) muls8s::return#2 ← (signed word) muls8s::return#0 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 muls8s::return#2 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 muls8s::return#2 line_cursor#1 ] ) + // (signed word) muls8s::return#2 = (signed word) muls8s::return#0 // register copy zp ZP_WORD:8 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 ] ) - // (signed word) signed_multiply_results_compare::ms#0 = (signed word) slow_signed_multiply::return#2 // register copy zp ZP_WORD:8 - //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 ] ) -- vbsyy=vbsz1 + //SEG49 [24] (signed word) signed_multiply_results_compare::ms#0 ← (signed word) muls8s::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 ] ) + // (signed word) signed_multiply_results_compare::ms#0 = (signed word) muls8s::return#2 // register copy zp ZP_WORD:8 + //SEG50 [25] (signed byte) mulf8s::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 mulf8s::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 mulf8s::a#0 line_cursor#1 ] ) -- vbsyy=vbsz1 ldy 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 ] ) - // (signed byte) signed_multiply::b#0 = (signed byte) signed_multiply_results_compare::b#2 // register copy zp ZP_BYTE:3 - //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::m#4 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::m#4 line_cursor#1 ] ) - jsr signed_multiply - //SEG53 [28] (signed word) signed_multiply::return#2 ← (signed word)(word) signed_multiply::m#4 [ 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)(word) signed_multiply::m#4 // register copy zp ZP_WORD:12 + //SEG51 [26] (signed byte) mulf8s::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 mulf8s::a#0 mulf8s::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 mulf8s::a#0 mulf8s::b#0 line_cursor#1 ] ) + // (signed byte) mulf8s::b#0 = (signed byte) signed_multiply_results_compare::b#2 // register copy zp ZP_BYTE:3 + //SEG52 [27] call mulf8s param-assignment [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 mulf8s::m#4 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 mulf8s::m#4 line_cursor#1 ] ) + jsr mulf8s + //SEG53 [28] (signed word) mulf8s::return#2 ← (signed word)(word) mulf8s::m#4 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 mulf8s::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 mulf8s::return#2 line_cursor#1 ] ) + // (signed word) mulf8s::return#2 = (signed word)(word) mulf8s::m#4 // register copy zp ZP_WORD:12 jmp b9 //SEG54 signed_multiply_results_compare::@9 b9: - //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:12 + //SEG55 [29] (signed word) signed_multiply_results_compare::ma#0 ← (signed word) mulf8s::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) mulf8s::return#2 // register copy zp ZP_WORD:12 //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 @@ -9053,86 +9049,86 @@ print_sbyte: { //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: { +//SEG233 mulf8s +mulf8s: { .label m = $c .label b = 3 .label return = $c - //SEG234 [113] (byte~) multiply::a#4 ← (byte)(signed byte) signed_multiply::a#0 [ signed_multiply::a#0 signed_multiply::b#0 multiply::a#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::a#0 signed_multiply::b#0 multiply::a#4 ] ) -- vbuaa=vbuyy + //SEG234 [113] (byte~) mulf8u::a#3 ← (byte)(signed byte) mulf8s::a#0 [ mulf8s::a#0 mulf8s::b#0 mulf8u::a#3 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::a#0 mulf8s::b#0 mulf8u::a#3 ] ) -- vbuaa=vbuyy tya - //SEG235 [114] (byte~) multiply::b#4 ← (byte)(signed byte) signed_multiply::b#0 [ signed_multiply::a#0 signed_multiply::b#0 multiply::a#4 multiply::b#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::a#0 signed_multiply::b#0 multiply::a#4 multiply::b#4 ] ) -- vbuxx=vbuz1 + //SEG235 [114] (byte~) mulf8u::b#3 ← (byte)(signed byte) mulf8s::b#0 [ mulf8s::a#0 mulf8s::b#0 mulf8u::a#3 mulf8u::b#3 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::a#0 mulf8s::b#0 mulf8u::a#3 mulf8u::b#3 ] ) -- vbuxx=vbuz1 ldx 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 [129] phi from signed_multiply to multiply [phi:signed_multiply->multiply] - multiply_from_signed_multiply: - //SEG238 [129] phi (byte) multiply::b#2 = (byte~) multiply::b#4 [phi:signed_multiply->multiply#0] -- register_copy - //SEG239 [129] phi (byte) multiply::a#2 = (byte~) multiply::a#4 [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:12 + //SEG236 [115] call mulf8u param-assignment [ mulf8s::a#0 mulf8s::b#0 mulf8u::return#0 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::a#0 mulf8s::b#0 mulf8u::return#0 ] ) + //SEG237 [129] phi from mulf8s to mulf8u [phi:mulf8s->mulf8u] + mulf8u_from_mulf8s: + //SEG238 [129] phi (byte) mulf8u::b#2 = (byte~) mulf8u::b#3 [phi:mulf8s->mulf8u#0] -- register_copy + //SEG239 [129] phi (byte) mulf8u::a#2 = (byte~) mulf8u::a#3 [phi:mulf8s->mulf8u#1] -- register_copy + jsr mulf8u + //SEG240 [116] (word) mulf8u::return#2 ← (word) mulf8u::return#0 [ mulf8s::a#0 mulf8s::b#0 mulf8u::return#2 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::a#0 mulf8s::b#0 mulf8u::return#2 ] ) + // (word) mulf8u::return#2 = (word) mulf8u::return#0 // register copy zp ZP_WORD:12 jmp b6 - //SEG241 signed_multiply::@6 + //SEG241 mulf8s::@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:12 - //SEG243 [118] if((signed byte) signed_multiply::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 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 ] ) -- vbsyy_ge_0_then_la1 + //SEG242 [117] (word) mulf8s::m#0 ← (word) mulf8u::return#2 [ mulf8s::a#0 mulf8s::b#0 mulf8s::m#0 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::a#0 mulf8s::b#0 mulf8s::m#0 ] ) + // (word) mulf8s::m#0 = (word) mulf8u::return#2 // register copy zp ZP_WORD:12 + //SEG243 [118] if((signed byte) mulf8s::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s::@1 [ mulf8s::a#0 mulf8s::b#0 mulf8s::m#0 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::a#0 mulf8s::b#0 mulf8s::m#0 ] ) -- vbsyy_ge_0_then_la1 cpy #0 bpl b1_from_b6 jmp b3 - //SEG244 signed_multiply::@3 + //SEG244 mulf8s::@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 ] ) -- vbuaa=_hi_vwuz1 + //SEG245 [119] (byte~) mulf8s::$6 ← > (word) mulf8s::m#0 [ mulf8s::a#0 mulf8s::b#0 mulf8s::m#0 mulf8s::$6 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::a#0 mulf8s::b#0 mulf8s::m#0 mulf8s::$6 ] ) -- vbuaa=_hi_vwuz1 lda m+1 - //SEG246 [120] (byte/signed byte/word/signed word/dword/signed dword~) signed_multiply::$16 ← (byte~) signed_multiply::$6 - (byte)(signed byte) signed_multiply::b#0 [ 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=vbuaa_minus_vbuz1 + //SEG246 [120] (byte/signed byte/word/signed word/dword/signed dword~) mulf8s::$16 ← (byte~) mulf8s::$6 - (byte)(signed byte) mulf8s::b#0 [ mulf8s::a#0 mulf8s::b#0 mulf8s::m#0 mulf8s::$16 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::a#0 mulf8s::b#0 mulf8s::m#0 mulf8s::$16 ] ) -- vbuaa=vbuaa_minus_vbuz1 sec sbc b - //SEG247 [121] (word) signed_multiply::m#1 ← (word) signed_multiply::m#0 hi= (byte/signed byte/word/signed word/dword/signed dword~) 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 + //SEG247 [121] (word) mulf8s::m#1 ← (word) mulf8s::m#0 hi= (byte/signed byte/word/signed word/dword/signed dword~) mulf8s::$16 [ mulf8s::a#0 mulf8s::b#0 mulf8s::m#1 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::a#0 mulf8s::b#0 mulf8s::m#1 ] ) -- vwuz1=vwuz1_sethi_vbuaa sta m+1 - //SEG248 [122] phi from signed_multiply::@3 signed_multiply::@6 to signed_multiply::@1 [phi:signed_multiply::@3/signed_multiply::@6->signed_multiply::@1] + //SEG248 [122] phi from mulf8s::@3 mulf8s::@6 to mulf8s::@1 [phi:mulf8s::@3/mulf8s::@6->mulf8s::@1] b1_from_b3: b1_from_b6: - //SEG249 [122] phi (word) signed_multiply::m#5 = (word) signed_multiply::m#1 [phi:signed_multiply::@3/signed_multiply::@6->signed_multiply::@1#0] -- register_copy + //SEG249 [122] phi (word) mulf8s::m#5 = (word) mulf8s::m#1 [phi:mulf8s::@3/mulf8s::@6->mulf8s::@1#0] -- register_copy jmp b1 - //SEG250 signed_multiply::@1 + //SEG250 mulf8s::@1 b1: - //SEG251 [123] if((signed byte) signed_multiply::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 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 + //SEG251 [123] if((signed byte) mulf8s::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s::@2 [ mulf8s::a#0 mulf8s::m#5 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::a#0 mulf8s::m#5 ] ) -- vbsz1_ge_0_then_la1 lda b cmp #0 bpl b2_from_b1 jmp b4 - //SEG252 signed_multiply::@4 + //SEG252 mulf8s::@4 b4: - //SEG253 [124] (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 ] ) -- vbuaa=_hi_vwuz1 + //SEG253 [124] (byte~) mulf8s::$12 ← > (word) mulf8s::m#5 [ mulf8s::a#0 mulf8s::m#5 mulf8s::$12 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::a#0 mulf8s::m#5 mulf8s::$12 ] ) -- vbuaa=_hi_vwuz1 lda m+1 - //SEG254 [125] (byte/signed byte/word/signed word/dword/signed dword~) signed_multiply::$17 ← (byte~) signed_multiply::$12 - (byte)(signed byte) signed_multiply::a#0 [ 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=vbuaa_minus_vbuyy + //SEG254 [125] (byte/signed byte/word/signed word/dword/signed dword~) mulf8s::$17 ← (byte~) mulf8s::$12 - (byte)(signed byte) mulf8s::a#0 [ mulf8s::m#5 mulf8s::$17 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::m#5 mulf8s::$17 ] ) -- vbuaa=vbuaa_minus_vbuyy sty $ff sec sbc $ff - //SEG255 [126] (word) signed_multiply::m#2 ← (word) signed_multiply::m#5 hi= (byte/signed byte/word/signed word/dword/signed dword~) 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 + //SEG255 [126] (word) mulf8s::m#2 ← (word) mulf8s::m#5 hi= (byte/signed byte/word/signed word/dword/signed dword~) mulf8s::$17 [ mulf8s::m#2 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::m#2 ] ) -- vwuz1=vwuz1_sethi_vbuaa sta m+1 - //SEG256 [127] phi from signed_multiply::@1 signed_multiply::@4 to signed_multiply::@2 [phi:signed_multiply::@1/signed_multiply::@4->signed_multiply::@2] + //SEG256 [127] phi from mulf8s::@1 mulf8s::@4 to mulf8s::@2 [phi:mulf8s::@1/mulf8s::@4->mulf8s::@2] b2_from_b1: b2_from_b4: - //SEG257 [127] phi (word) signed_multiply::m#4 = (word) signed_multiply::m#5 [phi:signed_multiply::@1/signed_multiply::@4->signed_multiply::@2#0] -- register_copy + //SEG257 [127] phi (word) mulf8s::m#4 = (word) mulf8s::m#5 [phi:mulf8s::@1/mulf8s::@4->mulf8s::@2#0] -- register_copy jmp b2 - //SEG258 signed_multiply::@2 + //SEG258 mulf8s::@2 b2: jmp breturn - //SEG259 signed_multiply::@return + //SEG259 mulf8s::@return breturn: - //SEG260 [128] return [ 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 ] ) + //SEG260 [128] return [ mulf8s::m#4 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::m#4 ] ) rts } -//SEG261 multiply -multiply: { +//SEG261 mulf8u +mulf8u: { .label memA = $fe .label memB = $ff .label return = $c - //SEG262 [130] *((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:157 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply::b#2 ] ) -- _deref_pbuc1=vbuaa + //SEG262 [130] *((const byte*) mulf8u::memA#0) ← (byte) mulf8u::a#2 [ mulf8u::b#2 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27::mulf8u:115 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::a#0 mulf8s::b#0 mulf8u::b#2 ] main:2::multiply_results_compare:13::mulf8u:157 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 mulf8u::b#2 ] ) -- _deref_pbuc1=vbuaa sta memA - //SEG263 [131] *((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:157 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ) -- _deref_pbuc1=vbuxx + //SEG263 [131] *((const byte*) mulf8u::memB#0) ← (byte) mulf8u::b#2 [ ] ( main:2::signed_multiply_results_compare:15::mulf8s:27::mulf8u:115 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::a#0 mulf8s::b#0 ] main:2::multiply_results_compare:13::mulf8u:157 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ) -- _deref_pbuc1=vbuxx stx memB - //SEG264 asm { ldamemA stasm1+1 stasm3+1 eor#$ff stasm2+1 stasm4+1 ldxmemB sec sm1: ldamul_sqr1_lo,x sm2: sbcmul_sqr2_lo,x stamemA sm3: ldamul_sqr1_hi,x sm4: sbcmul_sqr2_hi,x stamemB } + //SEG264 asm { ldamemA stasm1+1 stasm3+1 eor#$ff stasm2+1 stasm4+1 ldxmemB sec sm1: ldamulf_sqr1_lo,x sm2: sbcmulf_sqr2_lo,x stamemA sm3: ldamulf_sqr1_hi,x sm4: sbcmulf_sqr2_hi,x stamemB } lda memA sta sm1+1 sta sm3+1 @@ -9142,54 +9138,54 @@ multiply: { ldx memB sec sm1: - lda mul_sqr1_lo,x + lda mulf_sqr1_lo,x sm2: - sbc mul_sqr2_lo,x + sbc mulf_sqr2_lo,x sta memA sm3: - lda mul_sqr1_hi,x + lda mulf_sqr1_hi,x sm4: - sbc mul_sqr2_hi,x + sbc mulf_sqr2_hi,x sta memB - //SEG265 [133] (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:157 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply::return#0 ] ) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 + //SEG265 [133] (word) mulf8u::return#0 ← *((const byte*) mulf8u::memB#0) w= *((const byte*) mulf8u::memA#0) [ mulf8u::return#0 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27::mulf8u:115 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::a#0 mulf8s::b#0 mulf8u::return#0 ] main:2::multiply_results_compare:13::mulf8u:157 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 mulf8u::return#0 ] ) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 lda memA sta return lda memB sta return+1 jmp breturn - //SEG266 multiply::@return + //SEG266 mulf8u::@return breturn: - //SEG267 [134] 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:157 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply::return#0 ] ) + //SEG267 [134] return [ mulf8u::return#0 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27::mulf8u:115 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::a#0 mulf8s::b#0 mulf8u::return#0 ] main:2::multiply_results_compare:13::mulf8u:157 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 mulf8u::return#0 ] ) rts } -//SEG268 slow_signed_multiply -slow_signed_multiply: { +//SEG268 muls8s +muls8s: { .label m = 8 .label return = 8 .label a = 2 - //SEG269 [135] if((signed byte) slow_signed_multiply::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 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 + //SEG269 [135] if((signed byte) muls8s::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls8s::@1 [ muls8s::a#0 muls8s::b#0 ] ( main:2::signed_multiply_results_compare:15::muls8s:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 muls8s::a#0 muls8s::b#0 ] ) -- vbsz1_ge_0_then_la1 lda a cmp #0 bpl b1 - //SEG270 [136] phi from slow_signed_multiply to slow_signed_multiply::@2 [phi:slow_signed_multiply->slow_signed_multiply::@2] - b2_from_slow_signed_multiply: - //SEG271 [136] phi (signed byte) slow_signed_multiply::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:slow_signed_multiply->slow_signed_multiply::@2#0] -- vbsyy=vbuc1 + //SEG270 [136] phi from muls8s to muls8s::@2 [phi:muls8s->muls8s::@2] + b2_from_muls8s: + //SEG271 [136] phi (signed byte) muls8s::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8s->muls8s::@2#0] -- vbsyy=vbuc1 lda #0 tay - //SEG272 [136] phi (signed word) slow_signed_multiply::m#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:slow_signed_multiply->slow_signed_multiply::@2#1] -- vwsz1=vbuc1 + //SEG272 [136] phi (signed word) muls8s::m#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8s->muls8s::@2#1] -- vwsz1=vbuc1 lda #0 sta m lda #0 sta m+1 jmp b2 - //SEG273 [136] phi from slow_signed_multiply::@2 to slow_signed_multiply::@2 [phi:slow_signed_multiply::@2->slow_signed_multiply::@2] + //SEG273 [136] phi from muls8s::@2 to muls8s::@2 [phi:muls8s::@2->muls8s::@2] b2_from_b2: - //SEG274 [136] 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 - //SEG275 [136] 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 + //SEG274 [136] phi (signed byte) muls8s::i#2 = (signed byte) muls8s::i#1 [phi:muls8s::@2->muls8s::@2#0] -- register_copy + //SEG275 [136] phi (signed word) muls8s::m#3 = (signed word) muls8s::m#1 [phi:muls8s::@2->muls8s::@2#1] -- register_copy jmp b2 - //SEG276 slow_signed_multiply::@2 + //SEG276 muls8s::@2 b2: - //SEG277 [137] (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 + //SEG277 [137] (signed word) muls8s::m#1 ← (signed word) muls8s::m#3 - (signed byte) muls8s::b#0 [ muls8s::a#0 muls8s::b#0 muls8s::i#2 muls8s::m#1 ] ( main:2::signed_multiply_results_compare:15::muls8s:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 muls8s::a#0 muls8s::b#0 muls8s::i#2 muls8s::m#1 ] ) -- vwsz1=vwsz1_minus_vbsxx txa sta $fe ora #$7f @@ -9204,56 +9200,56 @@ slow_signed_multiply: { lda m+1 sbc $ff sta m+1 - //SEG278 [138] (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 + //SEG278 [138] (signed byte) muls8s::i#1 ← -- (signed byte) muls8s::i#2 [ muls8s::a#0 muls8s::b#0 muls8s::m#1 muls8s::i#1 ] ( main:2::signed_multiply_results_compare:15::muls8s:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 muls8s::a#0 muls8s::b#0 muls8s::m#1 muls8s::i#1 ] ) -- vbsyy=_dec_vbsyy dey - //SEG279 [139] 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 + //SEG279 [139] if((signed byte) muls8s::i#1!=(signed byte) muls8s::a#0) goto muls8s::@2 [ muls8s::a#0 muls8s::b#0 muls8s::m#1 muls8s::i#1 ] ( main:2::signed_multiply_results_compare:15::muls8s:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 muls8s::a#0 muls8s::b#0 muls8s::m#1 muls8s::i#1 ] ) -- vbsyy_neq_vbsz1_then_la1 cpy a bne b2_from_b2 - //SEG280 [140] 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] + //SEG280 [140] phi from muls8s::@2 muls8s::@5 to muls8s::@3 [phi:muls8s::@2/muls8s::@5->muls8s::@3] b3_from_b2: b3_from_b5: - //SEG281 [140] 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 + //SEG281 [140] phi (signed word) muls8s::return#0 = (signed word) muls8s::m#1 [phi:muls8s::@2/muls8s::@5->muls8s::@3#0] -- register_copy jmp b3 - //SEG282 [140] phi from slow_signed_multiply::@1 to slow_signed_multiply::@3 [phi:slow_signed_multiply::@1->slow_signed_multiply::@3] + //SEG282 [140] phi from muls8s::@1 to muls8s::@3 [phi:muls8s::@1->muls8s::@3] b3_from_b1: - //SEG283 [140] phi (signed word) slow_signed_multiply::return#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:slow_signed_multiply::@1->slow_signed_multiply::@3#0] -- vwsz1=vbuc1 + //SEG283 [140] phi (signed word) muls8s::return#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8s::@1->muls8s::@3#0] -- vwsz1=vbuc1 lda #0 sta return lda #0 sta return+1 jmp b3 - //SEG284 slow_signed_multiply::@3 + //SEG284 muls8s::@3 b3: jmp breturn - //SEG285 slow_signed_multiply::@return + //SEG285 muls8s::@return breturn: - //SEG286 [141] 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 ] ) + //SEG286 [141] return [ muls8s::return#0 ] ( main:2::signed_multiply_results_compare:15::muls8s:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 muls8s::return#0 ] ) rts - //SEG287 slow_signed_multiply::@1 + //SEG287 muls8s::@1 b1: - //SEG288 [142] if((signed byte) slow_signed_multiply::a#0<=(byte/signed byte/word/signed word/dword/signed dword) 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 + //SEG288 [142] if((signed byte) muls8s::a#0<=(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls8s::@3 [ muls8s::a#0 muls8s::b#0 ] ( main:2::signed_multiply_results_compare:15::muls8s:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 muls8s::a#0 muls8s::b#0 ] ) -- vbsz1_le_0_then_la1 lda a cmp #1 bmi b3_from_b1 - //SEG289 [143] phi from slow_signed_multiply::@1 to slow_signed_multiply::@5 [phi:slow_signed_multiply::@1->slow_signed_multiply::@5] + //SEG289 [143] phi from muls8s::@1 to muls8s::@5 [phi:muls8s::@1->muls8s::@5] b5_from_b1: - //SEG290 [143] phi (signed byte) slow_signed_multiply::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:slow_signed_multiply::@1->slow_signed_multiply::@5#0] -- vbsyy=vbuc1 + //SEG290 [143] phi (signed byte) muls8s::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8s::@1->muls8s::@5#0] -- vbsyy=vbuc1 lda #0 tay - //SEG291 [143] phi (signed word) slow_signed_multiply::m#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:slow_signed_multiply::@1->slow_signed_multiply::@5#1] -- vwsz1=vbuc1 + //SEG291 [143] phi (signed word) muls8s::m#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8s::@1->muls8s::@5#1] -- vwsz1=vbuc1 lda #0 sta m lda #0 sta m+1 jmp b5 - //SEG292 [143] phi from slow_signed_multiply::@5 to slow_signed_multiply::@5 [phi:slow_signed_multiply::@5->slow_signed_multiply::@5] + //SEG292 [143] phi from muls8s::@5 to muls8s::@5 [phi:muls8s::@5->muls8s::@5] b5_from_b5: - //SEG293 [143] 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 - //SEG294 [143] 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 + //SEG293 [143] phi (signed byte) muls8s::j#2 = (signed byte) muls8s::j#1 [phi:muls8s::@5->muls8s::@5#0] -- register_copy + //SEG294 [143] phi (signed word) muls8s::m#5 = (signed word) muls8s::m#2 [phi:muls8s::@5->muls8s::@5#1] -- register_copy jmp b5 - //SEG295 slow_signed_multiply::@5 + //SEG295 muls8s::@5 b5: - //SEG296 [144] (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 + //SEG296 [144] (signed word) muls8s::m#2 ← (signed word) muls8s::m#5 + (signed byte) muls8s::b#0 [ muls8s::a#0 muls8s::b#0 muls8s::m#2 muls8s::j#2 ] ( main:2::signed_multiply_results_compare:15::muls8s:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 muls8s::a#0 muls8s::b#0 muls8s::m#2 muls8s::j#2 ] ) -- vwsz1=vwsz1_plus_vbsxx txa sta $fe ora #$7f @@ -9268,9 +9264,9 @@ slow_signed_multiply: { lda m+1 adc $ff sta m+1 - //SEG297 [145] (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 + //SEG297 [145] (signed byte) muls8s::j#1 ← ++ (signed byte) muls8s::j#2 [ muls8s::a#0 muls8s::b#0 muls8s::m#2 muls8s::j#1 ] ( main:2::signed_multiply_results_compare:15::muls8s:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 muls8s::a#0 muls8s::b#0 muls8s::m#2 muls8s::j#1 ] ) -- vbsyy=_inc_vbsyy iny - //SEG298 [146] 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 + //SEG298 [146] if((signed byte) muls8s::j#1!=(signed byte) muls8s::a#0) goto muls8s::@5 [ muls8s::a#0 muls8s::b#0 muls8s::m#2 muls8s::j#1 ] ( main:2::signed_multiply_results_compare:15::muls8s:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 muls8s::a#0 muls8s::b#0 muls8s::m#2 muls8s::j#1 ] ) -- vbsyy_neq_vbsz1_then_la1 cpy a bne b5_from_b5 jmp b3_from_b5 @@ -9305,36 +9301,36 @@ multiply_results_compare: { jmp b2 //SEG309 multiply_results_compare::@2 b2: - //SEG310 [150] (byte) slow_multiply::a#0 ← (byte) multiply_results_compare::a#6 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::a#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#10 char_cursor#30 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 - //SEG311 [151] (byte) slow_multiply::b#0 ← (byte) multiply_results_compare::b#2 [ line_cursor#10 char_cursor#30 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#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::a#0 slow_multiply::b#0 ] ) -- vbuxx=vbuz1 + //SEG310 [150] (byte) muls8u::a#0 ← (byte) multiply_results_compare::a#6 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 muls8u::a#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 muls8u::a#0 ] ) + // (byte) muls8u::a#0 = (byte) multiply_results_compare::a#6 // register copy zp ZP_BYTE:2 + //SEG311 [151] (byte) muls8u::b#0 ← (byte) multiply_results_compare::b#2 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 muls8u::a#0 muls8u::b#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 muls8u::a#0 muls8u::b#0 ] ) -- vbuxx=vbuz1 ldx b - //SEG312 [152] call slow_multiply param-assignment [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::return#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::return#0 ] ) - jsr slow_multiply - //SEG313 [153] (word) slow_multiply::return#2 ← (word) slow_multiply::return#0 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::return#2 ] ( main:2::multiply_results_compare:13 [ line_cursor#10 char_cursor#30 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:8 + //SEG312 [152] call muls8u param-assignment [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 muls8u::return#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 muls8u::return#0 ] ) + jsr muls8u + //SEG313 [153] (word) muls8u::return#2 ← (word) muls8u::return#0 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 muls8u::return#2 ] ( main:2::multiply_results_compare:13 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 muls8u::return#2 ] ) + // (word) muls8u::return#2 = (word) muls8u::return#0 // register copy zp ZP_WORD:8 jmp b8 //SEG314 multiply_results_compare::@8 b8: - //SEG315 [154] (word) multiply_results_compare::ms#0 ← (word) slow_multiply::return#2 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ) - // (word) multiply_results_compare::ms#0 = (word) slow_multiply::return#2 // register copy zp ZP_WORD:8 - //SEG316 [155] (byte) multiply::a#1 ← (byte) multiply_results_compare::a#6 [ line_cursor#10 char_cursor#30 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#10 char_cursor#30 multiply::a#1 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ) -- vbuaa=vbuz1 + //SEG315 [154] (word) multiply_results_compare::ms#0 ← (word) muls8u::return#2 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ) + // (word) multiply_results_compare::ms#0 = (word) muls8u::return#2 // register copy zp ZP_WORD:8 + //SEG316 [155] (byte) mulf8u::a#1 ← (byte) multiply_results_compare::a#6 [ line_cursor#10 char_cursor#30 mulf8u::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#10 char_cursor#30 mulf8u::a#1 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ) -- vbuaa=vbuz1 lda a - //SEG317 [156] (byte) multiply::b#1 ← (byte) multiply_results_compare::b#2 [ line_cursor#10 char_cursor#30 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#10 char_cursor#30 multiply::a#1 multiply::b#1 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ) -- vbuxx=vbuz1 + //SEG317 [156] (byte) mulf8u::b#1 ← (byte) multiply_results_compare::b#2 [ line_cursor#10 char_cursor#30 mulf8u::a#1 mulf8u::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#10 char_cursor#30 mulf8u::a#1 mulf8u::b#1 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ) -- vbuxx=vbuz1 ldx b - //SEG318 [157] call multiply param-assignment [ line_cursor#10 char_cursor#30 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#10 char_cursor#30 multiply::return#0 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ) - //SEG319 [129] phi from multiply_results_compare::@8 to multiply [phi:multiply_results_compare::@8->multiply] - multiply_from_b8: - //SEG320 [129] phi (byte) multiply::b#2 = (byte) multiply::b#1 [phi:multiply_results_compare::@8->multiply#0] -- register_copy - //SEG321 [129] phi (byte) multiply::a#2 = (byte) multiply::a#1 [phi:multiply_results_compare::@8->multiply#1] -- register_copy - jsr multiply - //SEG322 [158] (word) multiply::return#3 ← (word) multiply::return#0 [ line_cursor#10 char_cursor#30 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#10 char_cursor#30 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:12 + //SEG318 [157] call mulf8u param-assignment [ line_cursor#10 char_cursor#30 mulf8u::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#10 char_cursor#30 mulf8u::return#0 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ) + //SEG319 [129] phi from multiply_results_compare::@8 to mulf8u [phi:multiply_results_compare::@8->mulf8u] + mulf8u_from_b8: + //SEG320 [129] phi (byte) mulf8u::b#2 = (byte) mulf8u::b#1 [phi:multiply_results_compare::@8->mulf8u#0] -- register_copy + //SEG321 [129] phi (byte) mulf8u::a#2 = (byte) mulf8u::a#1 [phi:multiply_results_compare::@8->mulf8u#1] -- register_copy + jsr mulf8u + //SEG322 [158] (word) mulf8u::return#3 ← (word) mulf8u::return#0 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 mulf8u::return#3 ] ( main:2::multiply_results_compare:13 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 mulf8u::return#3 ] ) + // (word) mulf8u::return#3 = (word) mulf8u::return#0 // register copy zp ZP_WORD:12 jmp b9 //SEG323 multiply_results_compare::@9 b9: - //SEG324 [159] (word) multiply_results_compare::ma#0 ← (word) multiply::return#3 [ line_cursor#10 char_cursor#30 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#10 char_cursor#30 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:12 + //SEG324 [159] (word) multiply_results_compare::ma#0 ← (word) mulf8u::return#3 [ line_cursor#10 char_cursor#30 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#10 char_cursor#30 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) mulf8u::return#3 // register copy zp ZP_WORD:12 //SEG325 [160] if((word) multiply_results_compare::ms#0==(word) multiply_results_compare::ma#0) goto multiply_results_compare::@3 [ line_cursor#10 char_cursor#30 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#10 char_cursor#30 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 @@ -9538,32 +9534,32 @@ multiply_error: { str2: .text " slow:@" str3: .text " / fast asm:@" } -//SEG409 slow_multiply -slow_multiply: { +//SEG409 muls8u +muls8u: { .label return = 8 .label m = 8 .label a = 2 - //SEG410 [195] if((byte) slow_multiply::a#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto slow_multiply::@1 [ slow_multiply::a#0 slow_multiply::b#0 ] ( main:2::multiply_results_compare:13::slow_multiply:152 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::a#0 slow_multiply::b#0 ] ) -- vbuz1_eq_0_then_la1 + //SEG410 [195] if((byte) muls8u::a#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls8u::@1 [ muls8u::a#0 muls8u::b#0 ] ( main:2::multiply_results_compare:13::muls8u:152 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 muls8u::a#0 muls8u::b#0 ] ) -- vbuz1_eq_0_then_la1 lda a - beq b1_from_slow_multiply - //SEG411 [196] phi from slow_multiply to slow_multiply::@2 [phi:slow_multiply->slow_multiply::@2] - b2_from_slow_multiply: - //SEG412 [196] phi (byte) slow_multiply::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:slow_multiply->slow_multiply::@2#0] -- vbuyy=vbuc1 + beq b1_from_muls8u + //SEG411 [196] phi from muls8u to muls8u::@2 [phi:muls8u->muls8u::@2] + b2_from_muls8u: + //SEG412 [196] phi (byte) muls8u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8u->muls8u::@2#0] -- vbuyy=vbuc1 ldy #0 - //SEG413 [196] phi (word) slow_multiply::m#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:slow_multiply->slow_multiply::@2#1] -- vwuz1=vbuc1 + //SEG413 [196] phi (word) muls8u::m#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8u->muls8u::@2#1] -- vwuz1=vbuc1 lda #0 sta m lda #0 sta m+1 jmp b2 - //SEG414 [196] phi from slow_multiply::@2 to slow_multiply::@2 [phi:slow_multiply::@2->slow_multiply::@2] + //SEG414 [196] phi from muls8u::@2 to muls8u::@2 [phi:muls8u::@2->muls8u::@2] b2_from_b2: - //SEG415 [196] phi (byte) slow_multiply::i#2 = (byte) slow_multiply::i#1 [phi:slow_multiply::@2->slow_multiply::@2#0] -- register_copy - //SEG416 [196] phi (word) slow_multiply::m#3 = (word) slow_multiply::m#1 [phi:slow_multiply::@2->slow_multiply::@2#1] -- register_copy + //SEG415 [196] phi (byte) muls8u::i#2 = (byte) muls8u::i#1 [phi:muls8u::@2->muls8u::@2#0] -- register_copy + //SEG416 [196] phi (word) muls8u::m#3 = (word) muls8u::m#1 [phi:muls8u::@2->muls8u::@2#1] -- register_copy jmp b2 - //SEG417 slow_multiply::@2 + //SEG417 muls8u::@2 b2: - //SEG418 [197] (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:152 [ line_cursor#10 char_cursor#30 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 + //SEG418 [197] (word) muls8u::m#1 ← (word) muls8u::m#3 + (byte) muls8u::b#0 [ muls8u::a#0 muls8u::b#0 muls8u::i#2 muls8u::m#1 ] ( main:2::multiply_results_compare:13::muls8u:152 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 muls8u::a#0 muls8u::b#0 muls8u::i#2 muls8u::m#1 ] ) -- vwuz1=vwuz1_plus_vbuxx txa clc adc m @@ -9571,29 +9567,29 @@ slow_multiply: { lda #0 adc m+1 sta m+1 - //SEG419 [198] (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:152 [ line_cursor#10 char_cursor#30 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 + //SEG419 [198] (byte) muls8u::i#1 ← ++ (byte) muls8u::i#2 [ muls8u::a#0 muls8u::b#0 muls8u::m#1 muls8u::i#1 ] ( main:2::multiply_results_compare:13::muls8u:152 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 muls8u::a#0 muls8u::b#0 muls8u::m#1 muls8u::i#1 ] ) -- vbuyy=_inc_vbuyy iny - //SEG420 [199] 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:152 [ line_cursor#10 char_cursor#30 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 + //SEG420 [199] if((byte) muls8u::i#1!=(byte) muls8u::a#0) goto muls8u::@2 [ muls8u::a#0 muls8u::b#0 muls8u::m#1 muls8u::i#1 ] ( main:2::multiply_results_compare:13::muls8u:152 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 muls8u::a#0 muls8u::b#0 muls8u::m#1 muls8u::i#1 ] ) -- vbuyy_neq_vbuz1_then_la1 cpy a bne b2_from_b2 - //SEG421 [200] phi from slow_multiply::@2 to slow_multiply::@1 [phi:slow_multiply::@2->slow_multiply::@1] + //SEG421 [200] phi from muls8u::@2 to muls8u::@1 [phi:muls8u::@2->muls8u::@1] b1_from_b2: - //SEG422 [200] phi (word) slow_multiply::return#0 = (word) slow_multiply::m#1 [phi:slow_multiply::@2->slow_multiply::@1#0] -- register_copy + //SEG422 [200] phi (word) muls8u::return#0 = (word) muls8u::m#1 [phi:muls8u::@2->muls8u::@1#0] -- register_copy jmp b1 - //SEG423 [200] phi from slow_multiply to slow_multiply::@1 [phi:slow_multiply->slow_multiply::@1] - b1_from_slow_multiply: - //SEG424 [200] phi (word) slow_multiply::return#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:slow_multiply->slow_multiply::@1#0] -- vwuz1=vbuc1 + //SEG423 [200] phi from muls8u to muls8u::@1 [phi:muls8u->muls8u::@1] + b1_from_muls8u: + //SEG424 [200] phi (word) muls8u::return#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8u->muls8u::@1#0] -- vwuz1=vbuc1 lda #0 sta return lda #0 sta return+1 jmp b1 - //SEG425 slow_multiply::@1 + //SEG425 muls8u::@1 b1: jmp breturn - //SEG426 slow_multiply::@return + //SEG426 muls8u::@return breturn: - //SEG427 [201] return [ slow_multiply::return#0 ] ( main:2::multiply_results_compare:13::slow_multiply:152 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::return#0 ] ) + //SEG427 [201] return [ muls8u::return#0 ] ( main:2::multiply_results_compare:13::muls8u:152 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 muls8u::return#0 ] ) rts } //SEG428 multiply_tables_compare @@ -9602,15 +9598,15 @@ multiply_tables_compare: { .label kc_sqr = 4 //SEG429 [203] phi from multiply_tables_compare to multiply_tables_compare::@1 [phi:multiply_tables_compare->multiply_tables_compare::@1] b1_from_multiply_tables_compare: - //SEG430 [203] 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 #multiply_tables_compare::@1#0] -- pbuz1=pbuc1 + lda #asm_mul_sqr1_lo + lda #>mula_sqr1_lo sta asm_sqr+1 - //SEG431 [203] 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 #multiply_tables_compare::@1#1] -- pbuz1=pbuc1 + lda #mul_sqr1_lo + lda #>mulf_sqr1_lo sta kc_sqr+1 jmp b1 //SEG432 [203] phi from multiply_tables_compare::@2 to multiply_tables_compare::@1 [phi:multiply_tables_compare::@2->multiply_tables_compare::@1] @@ -9711,13 +9707,13 @@ multiply_tables_compare: { bne !+ inc kc_sqr+1 !: - //SEG469 [217] if((byte*) multiply_tables_compare::kc_sqr#1<(const byte[512]) mul_sqr1_lo#0+(word/signed word/dword/signed dword) 512*(byte/signed byte/word/signed word/dword/signed dword) 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 + //SEG469 [217] if((byte*) multiply_tables_compare::kc_sqr#1<(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512*(byte/signed byte/word/signed word/dword/signed dword) 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 + cmp #>mulf_sqr1_lo+$200*4 bcc b1_from_b2 bne !+ lda kc_sqr - cmp #multiply_tables_compare::@5] @@ -9768,10 +9764,10 @@ multiply_tables_compare: { str1: .text " / @" str2: .text "multiply tables match!@" } -//SEG486 init_multiply_asm -init_multiply_asm: { +//SEG486 mulf_init_asm +mulf_init_asm: { .label mem = $ff - //SEG487 asm { ldx#$00 txa .byte$c9 lb1: tya adc#$00 ml1: staasm_mul_sqr1_hi,x tay cmp#$40 txa ror ml9: adc#$00 staml9+1 inx ml0: staasm_mul_sqr1_lo,x bnelb1 incml0+2 incml1+2 clc iny bnelb1 ldx#$00 ldy#$ff !: ldaasm_mul_sqr1_hi+1,x staasm_mul_sqr2_hi+$100,x ldaasm_mul_sqr1_hi,x staasm_mul_sqr2_hi,y ldaasm_mul_sqr1_lo+1,x staasm_mul_sqr2_lo+$100,x ldaasm_mul_sqr1_lo,x staasm_mul_sqr2_lo,y dey inx bne!- } + //SEG487 asm { ldx#$00 txa .byte$c9 lb1: tya adc#$00 ml1: stamula_sqr1_hi,x tay cmp#$40 txa ror ml9: adc#$00 staml9+1 inx ml0: stamula_sqr1_lo,x bnelb1 incml0+2 incml1+2 clc iny bnelb1 ldx#$00 ldy#$ff !: ldamula_sqr1_hi+1,x stamula_sqr2_hi+$100,x ldamula_sqr1_hi,x stamula_sqr2_hi,y ldamula_sqr1_lo+1,x stamula_sqr2_lo+$100,x ldamula_sqr1_lo,x stamula_sqr2_lo,y dey inx bne!- } ldx #0 txa .byte $c9 @@ -9779,7 +9775,7 @@ init_multiply_asm: { tya adc #0 ml1: - sta asm_mul_sqr1_hi,x + sta mula_sqr1_hi,x tay cmp #$40 txa @@ -9789,7 +9785,7 @@ init_multiply_asm: { sta ml9+1 inx ml0: - sta asm_mul_sqr1_lo,x + sta mula_sqr1_lo,x bne lb1 inc ml0+2 inc ml1+2 @@ -9799,37 +9795,37 @@ init_multiply_asm: { ldx #0 ldy #$ff !: - lda asm_mul_sqr1_hi+1,x - sta asm_mul_sqr2_hi+$100,x - lda asm_mul_sqr1_hi,x - sta asm_mul_sqr2_hi,y - lda asm_mul_sqr1_lo+1,x - sta asm_mul_sqr2_lo+$100,x - lda asm_mul_sqr1_lo,x - sta asm_mul_sqr2_lo,y + lda mula_sqr1_hi+1,x + sta mula_sqr2_hi+$100,x + lda mula_sqr1_hi,x + sta mula_sqr2_hi,y + lda mula_sqr1_lo+1,x + sta mula_sqr2_lo+$100,x + lda mula_sqr1_lo,x + sta mula_sqr2_lo,y dey inx bne !- - //SEG488 [224] *((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 + //SEG488 [224] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr1_lo#0) [ ] ( main:2::mulf_init_asm:9 [ ] ) -- _deref_pbuc1=_deref_pbuc2 + lda mula_sqr1_lo sta mem - //SEG489 [225] *((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 + //SEG489 [225] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr1_hi#0) [ ] ( main:2::mulf_init_asm:9 [ ] ) -- _deref_pbuc1=_deref_pbuc2 + lda mula_sqr1_hi sta mem - //SEG490 [226] *((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 + //SEG490 [226] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr2_lo#0) [ ] ( main:2::mulf_init_asm:9 [ ] ) -- _deref_pbuc1=_deref_pbuc2 + lda mula_sqr2_lo sta mem - //SEG491 [227] *((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 + //SEG491 [227] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr2_hi#0) [ ] ( main:2::mulf_init_asm:9 [ ] ) -- _deref_pbuc1=_deref_pbuc2 + lda mula_sqr2_hi sta mem jmp breturn - //SEG492 init_multiply_asm::@return + //SEG492 mulf_init_asm::@return breturn: - //SEG493 [228] return [ ] ( main:2::init_multiply_asm:9 [ ] ) + //SEG493 [228] return [ ] ( main:2::mulf_init_asm:9 [ ] ) rts } -//SEG494 init_multiply -init_multiply: { +//SEG494 mulf_init +mulf_init: { .label sqr1_hi = 6 .label sqr = 8 .label sqr1_lo = 4 @@ -9837,81 +9833,81 @@ init_multiply: { .label sqr2_hi = 6 .label sqr2_lo = 4 .label dir = 2 - //SEG495 [230] phi from init_multiply to init_multiply::@1 [phi:init_multiply->init_multiply::@1] - b1_from_init_multiply: - //SEG496 [230] phi (byte) init_multiply::x_2#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init_multiply->init_multiply::@1#0] -- vbuz1=vbuc1 + //SEG495 [230] phi from mulf_init to mulf_init::@1 [phi:mulf_init->mulf_init::@1] + b1_from_mulf_init: + //SEG496 [230] phi (byte) mulf_init::x_2#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#0] -- vbuz1=vbuc1 lda #0 sta x_2 - //SEG497 [230] phi (byte*) init_multiply::sqr1_hi#2 = (const byte[512]) mul_sqr1_hi#0+(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:init_multiply->init_multiply::@1#1] -- pbuz1=pbuc1 - lda #mulf_init::@1#1] -- pbuz1=pbuc1 + lda #mul_sqr1_hi+1 + lda #>mulf_sqr1_hi+1 sta sqr1_hi+1 - //SEG498 [230] phi (byte*) init_multiply::sqr1_lo#2 = (const byte[512]) mul_sqr1_lo#0+(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:init_multiply->init_multiply::@1#2] -- pbuz1=pbuc1 - lda #mulf_init::@1#2] -- pbuz1=pbuc1 + lda #mul_sqr1_lo+1 + lda #>mulf_sqr1_lo+1 sta sqr1_lo+1 - //SEG499 [230] phi (word) init_multiply::sqr#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init_multiply->init_multiply::@1#3] -- vwuz1=vbuc1 + //SEG499 [230] phi (word) mulf_init::sqr#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#3] -- vwuz1=vbuc1 lda #0 sta sqr lda #0 sta sqr+1 - //SEG500 [230] phi (byte) init_multiply::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init_multiply->init_multiply::@1#4] -- vbuxx=vbuc1 + //SEG500 [230] phi (byte) mulf_init::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#4] -- vbuxx=vbuc1 ldx #0 jmp b1 - //SEG501 [230] phi from init_multiply::@2 to init_multiply::@1 [phi:init_multiply::@2->init_multiply::@1] + //SEG501 [230] phi from mulf_init::@2 to mulf_init::@1 [phi:mulf_init::@2->mulf_init::@1] b1_from_b2: - //SEG502 [230] phi (byte) init_multiply::x_2#3 = (byte) init_multiply::x_2#2 [phi:init_multiply::@2->init_multiply::@1#0] -- register_copy - //SEG503 [230] phi (byte*) init_multiply::sqr1_hi#2 = (byte*) init_multiply::sqr1_hi#1 [phi:init_multiply::@2->init_multiply::@1#1] -- register_copy - //SEG504 [230] phi (byte*) init_multiply::sqr1_lo#2 = (byte*) init_multiply::sqr1_lo#1 [phi:init_multiply::@2->init_multiply::@1#2] -- register_copy - //SEG505 [230] phi (word) init_multiply::sqr#4 = (word) init_multiply::sqr#1 [phi:init_multiply::@2->init_multiply::@1#3] -- register_copy - //SEG506 [230] phi (byte) init_multiply::c#2 = (byte) init_multiply::c#1 [phi:init_multiply::@2->init_multiply::@1#4] -- register_copy + //SEG502 [230] phi (byte) mulf_init::x_2#3 = (byte) mulf_init::x_2#2 [phi:mulf_init::@2->mulf_init::@1#0] -- register_copy + //SEG503 [230] phi (byte*) mulf_init::sqr1_hi#2 = (byte*) mulf_init::sqr1_hi#1 [phi:mulf_init::@2->mulf_init::@1#1] -- register_copy + //SEG504 [230] phi (byte*) mulf_init::sqr1_lo#2 = (byte*) mulf_init::sqr1_lo#1 [phi:mulf_init::@2->mulf_init::@1#2] -- register_copy + //SEG505 [230] phi (word) mulf_init::sqr#4 = (word) mulf_init::sqr#1 [phi:mulf_init::@2->mulf_init::@1#3] -- register_copy + //SEG506 [230] phi (byte) mulf_init::c#2 = (byte) mulf_init::c#1 [phi:mulf_init::@2->mulf_init::@1#4] -- register_copy jmp b1 - //SEG507 init_multiply::@1 + //SEG507 mulf_init::@1 b1: - //SEG508 [231] (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 + //SEG508 [231] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 [ mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 ] ( main:2::mulf_init:7 [ mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 ] ) -- vbuxx=_inc_vbuxx inx - //SEG509 [232] (byte~) init_multiply::$2 ← (byte) init_multiply::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 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 + //SEG509 [232] (byte~) mulf_init::$2 ← (byte) mulf_init::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 1 [ mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$2 ] ( main:2::mulf_init:7 [ mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$2 ] ) -- vbuaa=vbuxx_band_vbuc1 txa and #1 - //SEG510 [233] if((byte~) init_multiply::$2!=(byte/signed byte/word/signed word/dword/signed dword) 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 + //SEG510 [233] if((byte~) mulf_init::$2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@2 [ mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 ] ( main:2::mulf_init:7 [ mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 ] ) -- vbuaa_neq_0_then_la1 cmp #0 bne b2_from_b1 jmp b5 - //SEG511 init_multiply::@5 + //SEG511 mulf_init::@5 b5: - //SEG512 [234] (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 + //SEG512 [234] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 [ mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#1 ] ( main:2::mulf_init:7 [ mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#1 ] ) -- vbuz1=_inc_vbuz1 inc x_2 - //SEG513 [235] (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 + //SEG513 [235] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#1 mulf_init::sqr#2 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#1 mulf_init::sqr#2 ] ) -- vwuz1=_inc_vwuz1 inc sqr bne !+ inc sqr+1 !: - //SEG514 [236] phi from init_multiply::@1 init_multiply::@5 to init_multiply::@2 [phi:init_multiply::@1/init_multiply::@5->init_multiply::@2] + //SEG514 [236] phi from mulf_init::@1 mulf_init::@5 to mulf_init::@2 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2] b2_from_b1: b2_from_b5: - //SEG515 [236] 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 - //SEG516 [236] phi (word) init_multiply::sqr#3 = (word) init_multiply::sqr#4 [phi:init_multiply::@1/init_multiply::@5->init_multiply::@2#1] -- register_copy + //SEG515 [236] phi (byte) mulf_init::x_2#2 = (byte) mulf_init::x_2#3 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2#0] -- register_copy + //SEG516 [236] phi (word) mulf_init::sqr#3 = (word) mulf_init::sqr#4 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2#1] -- register_copy jmp b2 - //SEG517 init_multiply::@2 + //SEG517 mulf_init::@2 b2: - //SEG518 [237] (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 + //SEG518 [237] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$5 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$5 ] ) -- vbuaa=_lo_vwuz1 lda sqr - //SEG519 [238] *((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 + //SEG519 [238] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ) -- _deref_pbuz1=vbuaa ldy #0 sta (sqr1_lo),y - //SEG520 [239] (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 + //SEG520 [239] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$6 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$6 ] ) -- vbuaa=_hi_vwuz1 lda sqr+1 - //SEG521 [240] *((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 + //SEG521 [240] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ) -- _deref_pbuz1=vbuaa ldy #0 sta (sqr1_hi),y - //SEG522 [241] (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 + //SEG522 [241] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ) -- pbuz1=_inc_pbuz1 inc sqr1_hi bne !+ inc sqr1_hi+1 !: - //SEG523 [242] (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 + //SEG523 [242] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ) -- vwuz1=vwuz1_plus_vbuz2 lda x_2 clc adc sqr @@ -9919,108 +9915,108 @@ init_multiply: { lda #0 adc sqr+1 sta sqr+1 - //SEG524 [243] (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 + //SEG524 [243] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 [ mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_lo#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ( main:2::mulf_init:7 [ mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_lo#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ) -- pbuz1=_inc_pbuz1 inc sqr1_lo bne !+ inc sqr1_lo+1 !: - //SEG525 [244] if((byte*) init_multiply::sqr1_lo#1!=(const byte[512]) mul_sqr1_lo#0+(word/signed word/dword/signed dword) 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 + //SEG525 [244] if((byte*) mulf_init::sqr1_lo#1!=(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512) goto mulf_init::@1 [ mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_lo#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ( main:2::mulf_init:7 [ mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_lo#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ) -- pbuz1_neq_pbuc1_then_la1 lda sqr1_lo+1 - cmp #>mul_sqr1_lo+$200 + cmp #>mulf_sqr1_lo+$200 bne b1_from_b2 lda sqr1_lo - cmp #init_multiply::@3] + //SEG526 [245] phi from mulf_init::@2 to mulf_init::@3 [phi:mulf_init::@2->mulf_init::@3] b3_from_b2: - //SEG527 [245] phi (byte) init_multiply::dir#2 = (byte/word/signed word/dword/signed dword) 255 [phi:init_multiply::@2->init_multiply::@3#0] -- vbuz1=vbuc1 + //SEG527 [245] phi (byte) mulf_init::dir#2 = (byte/word/signed word/dword/signed dword) 255 [phi:mulf_init::@2->mulf_init::@3#0] -- vbuz1=vbuc1 lda #$ff sta dir - //SEG528 [245] 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 #mulf_init::@3#1] -- pbuz1=pbuc1 + lda #mul_sqr2_hi + lda #>mulf_sqr2_hi sta sqr2_hi+1 - //SEG529 [245] 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 #mulf_init::@3#2] -- pbuz1=pbuc1 + lda #mul_sqr2_lo + lda #>mulf_sqr2_lo sta sqr2_lo+1 - //SEG530 [245] phi (byte) init_multiply::x_255#2 = ((byte))-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:init_multiply::@2->init_multiply::@3#3] -- vbuxx=vbuc1 + //SEG530 [245] phi (byte) mulf_init::x_255#2 = ((byte))-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init::@2->mulf_init::@3#3] -- vbuxx=vbuc1 ldx #-1 jmp b3 - //SEG531 [245] phi from init_multiply::@4 to init_multiply::@3 [phi:init_multiply::@4->init_multiply::@3] + //SEG531 [245] phi from mulf_init::@4 to mulf_init::@3 [phi:mulf_init::@4->mulf_init::@3] b3_from_b4: - //SEG532 [245] phi (byte) init_multiply::dir#2 = (byte) init_multiply::dir#3 [phi:init_multiply::@4->init_multiply::@3#0] -- register_copy - //SEG533 [245] phi (byte*) init_multiply::sqr2_hi#2 = (byte*) init_multiply::sqr2_hi#1 [phi:init_multiply::@4->init_multiply::@3#1] -- register_copy - //SEG534 [245] phi (byte*) init_multiply::sqr2_lo#2 = (byte*) init_multiply::sqr2_lo#1 [phi:init_multiply::@4->init_multiply::@3#2] -- register_copy - //SEG535 [245] phi (byte) init_multiply::x_255#2 = (byte) init_multiply::x_255#1 [phi:init_multiply::@4->init_multiply::@3#3] -- register_copy + //SEG532 [245] phi (byte) mulf_init::dir#2 = (byte) mulf_init::dir#3 [phi:mulf_init::@4->mulf_init::@3#0] -- register_copy + //SEG533 [245] phi (byte*) mulf_init::sqr2_hi#2 = (byte*) mulf_init::sqr2_hi#1 [phi:mulf_init::@4->mulf_init::@3#1] -- register_copy + //SEG534 [245] phi (byte*) mulf_init::sqr2_lo#2 = (byte*) mulf_init::sqr2_lo#1 [phi:mulf_init::@4->mulf_init::@3#2] -- register_copy + //SEG535 [245] phi (byte) mulf_init::x_255#2 = (byte) mulf_init::x_255#1 [phi:mulf_init::@4->mulf_init::@3#3] -- register_copy jmp b3 - //SEG536 init_multiply::@3 + //SEG536 mulf_init::@3 b3: - //SEG537 [246] *((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 + //SEG537 [246] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[512]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) -- _deref_pbuz1=pbuc1_derefidx_vbuxx + lda mulf_sqr1_lo,x ldy #0 sta (sqr2_lo),y - //SEG538 [247] *((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 + //SEG538 [247] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[512]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) -- _deref_pbuz1=pbuc1_derefidx_vbuxx + lda mulf_sqr1_hi,x ldy #0 sta (sqr2_hi),y - //SEG539 [248] (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 + //SEG539 [248] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::sqr2_hi#1 ] ( main:2::mulf_init:7 [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::sqr2_hi#1 ] ) -- pbuz1=_inc_pbuz1 inc sqr2_hi bne !+ inc sqr2_hi+1 !: - //SEG540 [249] (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 + //SEG540 [249] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ( main:2::mulf_init:7 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ) -- vbuxx=vbuxx_plus_vbuz1 txa clc adc dir tax - //SEG541 [250] if((byte) init_multiply::x_255#1!=(byte/signed byte/word/signed word/dword/signed dword) 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 + //SEG541 [250] if((byte) mulf_init::x_255#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@12 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ( main:2::mulf_init:7 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ) -- vbuxx_neq_0_then_la1 cpx #0 bne b12_from_b3 - //SEG542 [251] phi from init_multiply::@3 to init_multiply::@4 [phi:init_multiply::@3->init_multiply::@4] + //SEG542 [251] phi from mulf_init::@3 to mulf_init::@4 [phi:mulf_init::@3->mulf_init::@4] b4_from_b3: - //SEG543 [251] phi (byte) init_multiply::dir#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:init_multiply::@3->init_multiply::@4#0] -- vbuz1=vbuc1 + //SEG543 [251] phi (byte) mulf_init::dir#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init::@3->mulf_init::@4#0] -- vbuz1=vbuc1 lda #1 sta dir jmp b4 - //SEG544 init_multiply::@4 + //SEG544 mulf_init::@4 b4: - //SEG545 [252] (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 + //SEG545 [252] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 [ mulf_init::x_255#1 mulf_init::sqr2_lo#1 mulf_init::sqr2_hi#1 mulf_init::dir#3 ] ( main:2::mulf_init:7 [ mulf_init::x_255#1 mulf_init::sqr2_lo#1 mulf_init::sqr2_hi#1 mulf_init::dir#3 ] ) -- pbuz1=_inc_pbuz1 inc sqr2_lo bne !+ inc sqr2_lo+1 !: - //SEG546 [253] if((byte*) init_multiply::sqr2_lo#1!=(const byte[512]) mul_sqr2_lo#0+(word/signed word/dword/signed dword) 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 + //SEG546 [253] if((byte*) mulf_init::sqr2_lo#1!=(const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) goto mulf_init::@3 [ mulf_init::x_255#1 mulf_init::sqr2_lo#1 mulf_init::sqr2_hi#1 mulf_init::dir#3 ] ( main:2::mulf_init:7 [ mulf_init::x_255#1 mulf_init::sqr2_lo#1 mulf_init::sqr2_hi#1 mulf_init::dir#3 ] ) -- pbuz1_neq_pbuc1_then_la1 lda sqr2_lo+1 - cmp #>mul_sqr2_lo+$1ff + cmp #>mulf_sqr2_lo+$1ff bne b3_from_b4 lda sqr2_lo - cmp #init_multiply::@12] + //SEG552 [257] phi from mulf_init::@3 to mulf_init::@12 [phi:mulf_init::@3->mulf_init::@12] b12_from_b3: jmp b12 - //SEG553 init_multiply::@12 + //SEG553 mulf_init::@12 b12: - //SEG554 [251] phi from init_multiply::@12 to init_multiply::@4 [phi:init_multiply::@12->init_multiply::@4] + //SEG554 [251] phi from mulf_init::@12 to mulf_init::@4 [phi:mulf_init::@12->mulf_init::@4] b4_from_b12: - //SEG555 [251] phi (byte) init_multiply::dir#3 = (byte) init_multiply::dir#2 [phi:init_multiply::@12->init_multiply::@4#0] -- register_copy + //SEG555 [251] phi (byte) mulf_init::dir#3 = (byte) mulf_init::dir#2 [phi:mulf_init::@12->mulf_init::@4#0] -- register_copy jmp b4 } //SEG556 print_cls @@ -10063,21 +10059,21 @@ print_cls: { rts } .align $100 - mul_sqr1_lo: .fill $200, 0 + mulf_sqr1_lo: .fill $200, 0 .align $100 - mul_sqr1_hi: .fill $200, 0 + mulf_sqr1_hi: .fill $200, 0 .align $100 - mul_sqr2_lo: .fill $200, 0 + mulf_sqr2_lo: .fill $200, 0 .align $100 - mul_sqr2_hi: .fill $200, 0 + mulf_sqr2_hi: .fill $200, 0 .align $100 - asm_mul_sqr1_lo: .fill $200, 0 + mula_sqr1_lo: .fill $200, 0 .align $100 - asm_mul_sqr1_hi: .fill $200, 0 + mula_sqr1_hi: .fill $200, 0 .align $100 - asm_mul_sqr2_lo: .fill $200, 0 + mula_sqr2_lo: .fill $200, 0 .align $100 - asm_mul_sqr2_hi: .fill $200, 0 + mula_sqr2_hi: .fill $200, 0 ASSEMBLER OPTIMIZATIONS Removing instruction jmp b20 @@ -10220,7 +10216,7 @@ Removing instruction bbegin: Removing instruction b20_from_bbegin: Removing instruction bend_from_b20: Removing instruction b1_from_main: -Removing instruction init_multiply_from_b1: +Removing instruction mulf_init_from_b1: Removing instruction b2_from_b1: Removing instruction b3_from_b2: Removing instruction multiply_tables_compare_from_b3: @@ -10344,16 +10340,16 @@ Removing instruction b2: Removing instruction b4: Removing instruction print_byte_from_b1: Removing instruction breturn: -Removing instruction multiply_from_signed_multiply: +Removing instruction mulf8u_from_mulf8s: Removing instruction b6: Removing instruction b3: Removing instruction b4: Removing instruction breturn: -Removing instruction b2_from_slow_signed_multiply: +Removing instruction b2_from_muls8s: Removing instruction b5_from_b1: Removing instruction b1_from_multiply_results_compare: Removing instruction b8: -Removing instruction multiply_from_b8: +Removing instruction mulf8u_from_b8: Removing instruction b9: Removing instruction b4: Removing instruction multiply_error_from_b4: @@ -10374,7 +10370,7 @@ Removing instruction b7: Removing instruction print_word_from_b7: Removing instruction b8: Removing instruction breturn: -Removing instruction b2_from_slow_multiply: +Removing instruction b2_from_muls8u: Removing instruction b1_from_b2: Removing instruction b1_from_multiply_tables_compare: Removing instruction b3: @@ -10389,7 +10385,7 @@ Removing instruction b5: Removing instruction b10: Removing instruction breturn_from_b10: Removing instruction breturn: -Removing instruction b1_from_init_multiply: +Removing instruction b1_from_mulf_init: Removing instruction b5: Removing instruction b3_from_b2: Removing instruction b4_from_b3: @@ -10403,7 +10399,7 @@ 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 +Relabelling long label b1_from_muls8u to b3 Succesful ASM optimization Pass5RelabelLongLabels Removing instruction jmp b1 Removing instruction jmp b2 @@ -10431,14 +10427,6 @@ FINAL SYMBOL TABLE (const byte*) BGCOL#0 BGCOL = ((byte*))(word/dword/signed dword) 53281 (byte*) SCREEN (const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024 -(byte[512]) asm_mul_sqr1_hi -(const byte[512]) asm_mul_sqr1_hi#0 asm_mul_sqr1_hi = { fill( 512, 0) } -(byte[512]) asm_mul_sqr1_lo -(const byte[512]) asm_mul_sqr1_lo#0 asm_mul_sqr1_lo = { fill( 512, 0) } -(byte[512]) asm_mul_sqr2_hi -(const byte[512]) asm_mul_sqr2_hi#0 asm_mul_sqr2_hi = { fill( 512, 0) } -(byte[512]) asm_mul_sqr2_lo -(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:10 11.0 (byte*) char_cursor#122 char_cursor zp ZP_WORD:10 1.6944444444444446 @@ -10454,52 +10442,6 @@ FINAL SYMBOL TABLE (byte*~) char_cursor#201 char_cursor zp ZP_WORD:10 4.0 (byte*) char_cursor#30 char_cursor zp ZP_WORD:10 0.27586206896551724 (byte*) char_cursor#78 char_cursor zp ZP_WORD:10 6.0 -(void()) init_multiply() -(byte~) init_multiply::$2 reg byte a 22.0 -(byte~) init_multiply::$5 reg byte a 22.0 -(byte~) init_multiply::$6 reg byte a 22.0 -(label) init_multiply::@1 -(label) init_multiply::@12 -(label) init_multiply::@2 -(label) init_multiply::@3 -(label) init_multiply::@4 -(label) init_multiply::@5 -(label) init_multiply::@8 -(label) init_multiply::@return -(byte) init_multiply::c -(byte) init_multiply::c#1 reg byte x 2.357142857142857 -(byte) init_multiply::c#2 reg byte x 22.0 -(byte) init_multiply::dir -(byte) init_multiply::dir#2 dir zp ZP_BYTE:2 4.714285714285714 -(byte) init_multiply::dir#3 dir zp ZP_BYTE:2 7.333333333333333 -(word) init_multiply::sqr -(word) init_multiply::sqr#1 sqr zp ZP_WORD:8 7.333333333333333 -(word) init_multiply::sqr#2 sqr zp ZP_WORD:8 22.0 -(word) init_multiply::sqr#3 sqr zp ZP_WORD:8 9.166666666666666 -(word) init_multiply::sqr#4 sqr zp ZP_WORD:8 6.6000000000000005 -(byte*) init_multiply::sqr1_hi -(byte*) init_multiply::sqr1_hi#1 sqr1_hi zp ZP_WORD:6 5.5 -(byte*) init_multiply::sqr1_hi#2 sqr1_hi zp ZP_WORD:6 3.0 -(byte*) init_multiply::sqr1_lo -(byte*) init_multiply::sqr1_lo#1 sqr1_lo zp ZP_WORD:4 16.5 -(byte*) init_multiply::sqr1_lo#2 sqr1_lo zp ZP_WORD:4 2.5384615384615383 -(byte*) init_multiply::sqr2_hi -(byte*) init_multiply::sqr2_hi#1 sqr2_hi zp ZP_WORD:6 3.142857142857143 -(byte*) init_multiply::sqr2_hi#2 sqr2_hi zp ZP_WORD:6 11.0 -(byte*) init_multiply::sqr2_lo -(byte*) init_multiply::sqr2_lo#1 sqr2_lo zp ZP_WORD:4 16.5 -(byte*) init_multiply::sqr2_lo#2 sqr2_lo zp ZP_WORD:4 4.125 -(byte) init_multiply::x_2 -(byte) init_multiply::x_2#1 x_2 zp ZP_BYTE:2 11.0 -(byte) init_multiply::x_2#2 x_2 zp ZP_BYTE:2 4.888888888888889 -(byte) init_multiply::x_2#3 x_2 zp ZP_BYTE:2 8.25 -(byte) init_multiply::x_255 -(byte) init_multiply::x_255#1 reg byte x 5.5 -(byte) init_multiply::x_255#2 reg byte x 11.0 -(void()) init_multiply_asm() -(label) init_multiply_asm::@return -(byte*) init_multiply_asm::mem -(const byte*) init_multiply_asm::mem#0 mem = ((byte*))(byte/word/signed word/dword/signed dword) 255 (byte*) line_cursor (byte*) line_cursor#1 line_cursor zp ZP_WORD:4 0.8181818181818181 (byte*) line_cursor#10 line_cursor zp ZP_WORD:4 0.1276595744680851 @@ -10512,32 +10454,150 @@ FINAL SYMBOL TABLE (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) } -(byte[512]) mul_sqr1_lo -(const byte[512]) mul_sqr1_lo#0 mul_sqr1_lo = { fill( 512, 0) } -(byte[512]) mul_sqr2_hi -(const byte[512]) mul_sqr2_hi#0 mul_sqr2_hi = { fill( 512, 0) } -(byte[512]) mul_sqr2_lo -(const byte[512]) mul_sqr2_lo#0 mul_sqr2_lo = { fill( 512, 0) } -(word()) multiply((byte) multiply::a , (byte) multiply::b) -(label) multiply::@return -(byte) multiply::a -(byte) multiply::a#1 reg byte a 101.0 -(byte) multiply::a#2 reg byte a 105.0 -(byte~) multiply::a#4 reg byte a 2.0 -(byte) multiply::b -(byte) multiply::b#1 reg byte x 202.0 -(byte) multiply::b#2 reg byte x 52.5 -(byte~) multiply::b#4 reg byte x 4.0 -(byte*) multiply::memA -(const byte*) multiply::memA#0 memA = ((byte*))(byte/word/signed word/dword/signed dword) 254 -(byte*) multiply::memB -(const byte*) multiply::memB#0 memB = ((byte*))(byte/word/signed word/dword/signed dword) 255 -(word) multiply::return -(word) multiply::return#0 return zp ZP_WORD:12 26.25 -(word) multiply::return#2 return zp ZP_WORD:12 4.0 -(word) multiply::return#3 return zp ZP_WORD:12 202.0 +(byte[512]) mula_sqr1_hi +(const byte[512]) mula_sqr1_hi#0 mula_sqr1_hi = { fill( 512, 0) } +(byte[512]) mula_sqr1_lo +(const byte[512]) mula_sqr1_lo#0 mula_sqr1_lo = { fill( 512, 0) } +(byte[512]) mula_sqr2_hi +(const byte[512]) mula_sqr2_hi#0 mula_sqr2_hi = { fill( 512, 0) } +(byte[512]) mula_sqr2_lo +(const byte[512]) mula_sqr2_lo#0 mula_sqr2_lo = { fill( 512, 0) } +(signed word()) mulf8s((signed byte) mulf8s::a , (signed byte) mulf8s::b) +(byte~) mulf8s::$12 reg byte a 4.0 +(byte/signed byte/word/signed word/dword/signed dword~) mulf8s::$16 reg byte a 4.0 +(byte/signed byte/word/signed word/dword/signed dword~) mulf8s::$17 reg byte a 4.0 +(byte~) mulf8s::$6 reg byte a 4.0 +(label) mulf8s::@1 +(label) mulf8s::@2 +(label) mulf8s::@3 +(label) mulf8s::@4 +(label) mulf8s::@6 +(label) mulf8s::@return +(signed byte) mulf8s::a +(signed byte) mulf8s::a#0 reg byte y 7.357142857142858 +(signed byte) mulf8s::b +(signed byte) mulf8s::b#0 b zp ZP_BYTE:3 9.363636363636363 +(word) mulf8s::m +(word) mulf8s::m#0 m zp ZP_WORD:12 2.0 +(word) mulf8s::m#1 m zp ZP_WORD:12 4.0 +(word) mulf8s::m#2 m zp ZP_WORD:12 4.0 +(word) mulf8s::m#4 m zp ZP_WORD:12 1.3333333333333333 +(word) mulf8s::m#5 m zp ZP_WORD:12 2.5 +(signed word) mulf8s::return +(signed word) mulf8s::return#2 return zp ZP_WORD:12 202.0 +(word()) mulf8u((byte) mulf8u::a , (byte) mulf8u::b) +(label) mulf8u::@return +(byte) mulf8u::a +(byte) mulf8u::a#1 reg byte a 101.0 +(byte) mulf8u::a#2 reg byte a 105.0 +(byte~) mulf8u::a#3 reg byte a 2.0 +(byte) mulf8u::b +(byte) mulf8u::b#1 reg byte x 202.0 +(byte) mulf8u::b#2 reg byte x 52.5 +(byte~) mulf8u::b#3 reg byte x 4.0 +(byte*) mulf8u::memA +(const byte*) mulf8u::memA#0 memA = ((byte*))(byte/word/signed word/dword/signed dword) 254 +(byte*) mulf8u::memB +(const byte*) mulf8u::memB#0 memB = ((byte*))(byte/word/signed word/dword/signed dword) 255 +(word) mulf8u::return +(word) mulf8u::return#0 return zp ZP_WORD:12 26.25 +(word) mulf8u::return#2 return zp ZP_WORD:12 4.0 +(word) mulf8u::return#3 return zp ZP_WORD:12 202.0 +(void()) mulf_init() +(byte~) mulf_init::$2 reg byte a 22.0 +(byte~) mulf_init::$5 reg byte a 22.0 +(byte~) mulf_init::$6 reg byte a 22.0 +(label) mulf_init::@1 +(label) mulf_init::@12 +(label) mulf_init::@2 +(label) mulf_init::@3 +(label) mulf_init::@4 +(label) mulf_init::@5 +(label) mulf_init::@8 +(label) mulf_init::@return +(byte) mulf_init::c +(byte) mulf_init::c#1 reg byte x 2.357142857142857 +(byte) mulf_init::c#2 reg byte x 22.0 +(byte) mulf_init::dir +(byte) mulf_init::dir#2 dir zp ZP_BYTE:2 4.714285714285714 +(byte) mulf_init::dir#3 dir zp ZP_BYTE:2 7.333333333333333 +(word) mulf_init::sqr +(word) mulf_init::sqr#1 sqr zp ZP_WORD:8 7.333333333333333 +(word) mulf_init::sqr#2 sqr zp ZP_WORD:8 22.0 +(word) mulf_init::sqr#3 sqr zp ZP_WORD:8 9.166666666666666 +(word) mulf_init::sqr#4 sqr zp ZP_WORD:8 6.6000000000000005 +(byte*) mulf_init::sqr1_hi +(byte*) mulf_init::sqr1_hi#1 sqr1_hi zp ZP_WORD:6 5.5 +(byte*) mulf_init::sqr1_hi#2 sqr1_hi zp ZP_WORD:6 3.0 +(byte*) mulf_init::sqr1_lo +(byte*) mulf_init::sqr1_lo#1 sqr1_lo zp ZP_WORD:4 16.5 +(byte*) mulf_init::sqr1_lo#2 sqr1_lo zp ZP_WORD:4 2.5384615384615383 +(byte*) mulf_init::sqr2_hi +(byte*) mulf_init::sqr2_hi#1 sqr2_hi zp ZP_WORD:6 3.142857142857143 +(byte*) mulf_init::sqr2_hi#2 sqr2_hi zp ZP_WORD:6 11.0 +(byte*) mulf_init::sqr2_lo +(byte*) mulf_init::sqr2_lo#1 sqr2_lo zp ZP_WORD:4 16.5 +(byte*) mulf_init::sqr2_lo#2 sqr2_lo zp ZP_WORD:4 4.125 +(byte) mulf_init::x_2 +(byte) mulf_init::x_2#1 x_2 zp ZP_BYTE:2 11.0 +(byte) mulf_init::x_2#2 x_2 zp ZP_BYTE:2 4.888888888888889 +(byte) mulf_init::x_2#3 x_2 zp ZP_BYTE:2 8.25 +(byte) mulf_init::x_255 +(byte) mulf_init::x_255#1 reg byte x 5.5 +(byte) mulf_init::x_255#2 reg byte x 11.0 +(void()) mulf_init_asm() +(label) mulf_init_asm::@return +(byte*) mulf_init_asm::mem +(const byte*) mulf_init_asm::mem#0 mem = ((byte*))(byte/word/signed word/dword/signed dword) 255 +(byte[512]) mulf_sqr1_hi +(const byte[512]) mulf_sqr1_hi#0 mulf_sqr1_hi = { fill( 512, 0) } +(byte[512]) mulf_sqr1_lo +(const byte[512]) mulf_sqr1_lo#0 mulf_sqr1_lo = { fill( 512, 0) } +(byte[512]) mulf_sqr2_hi +(const byte[512]) mulf_sqr2_hi#0 mulf_sqr2_hi = { fill( 512, 0) } +(byte[512]) mulf_sqr2_lo +(const byte[512]) mulf_sqr2_lo#0 mulf_sqr2_lo = { fill( 512, 0) } +(signed word()) muls8s((signed byte) muls8s::a , (signed byte) muls8s::b) +(label) muls8s::@1 +(label) muls8s::@2 +(label) muls8s::@3 +(label) muls8s::@5 +(label) muls8s::@return +(signed byte) muls8s::a +(signed byte) muls8s::a#0 a zp ZP_BYTE:2 175.58333333333334 +(signed byte) muls8s::b +(signed byte) muls8s::b#0 reg byte x 191.1818181818182 +(signed byte) muls8s::i +(signed byte) muls8s::i#1 reg byte y 1501.5 +(signed byte) muls8s::i#2 reg byte y 1001.0 +(signed byte) muls8s::j +(signed byte) muls8s::j#1 reg byte y 1501.5 +(signed byte) muls8s::j#2 reg byte y 1001.0 +(signed word) muls8s::m +(signed word) muls8s::m#1 m zp ZP_WORD:8 1001.0 +(signed word) muls8s::m#2 m zp ZP_WORD:8 1001.0 +(signed word) muls8s::m#3 m zp ZP_WORD:8 2002.0 +(signed word) muls8s::m#5 m zp ZP_WORD:8 2002.0 +(signed word) muls8s::return +(signed word) muls8s::return#0 return zp ZP_WORD:8 701.0 +(signed word) muls8s::return#2 return zp ZP_WORD:8 202.0 +(word()) muls8u((byte) muls8u::a , (byte) muls8u::b) +(label) muls8u::@1 +(label) muls8u::@2 +(label) muls8u::@return +(byte) muls8u::a +(byte) muls8u::a#0 a zp ZP_BYTE:2 157.71428571428572 +(byte) muls8u::b +(byte) muls8u::b#0 reg byte x 183.66666666666669 +(byte) muls8u::i +(byte) muls8u::i#1 reg byte y 1501.5 +(byte) muls8u::i#2 reg byte y 1001.0 +(word) muls8u::m +(word) muls8u::m#1 m zp ZP_WORD:8 1001.0 +(word) muls8u::m#3 m zp ZP_WORD:8 2002.0 +(word) muls8u::return +(word) muls8u::return#0 return zp ZP_WORD:8 367.33333333333337 +(word) muls8u::return#2 return zp ZP_WORD:8 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 @@ -10670,29 +10730,6 @@ FINAL SYMBOL TABLE (word) print_word::w#4 w zp ZP_WORD:8 4.0 (word) print_word::w#5 w zp ZP_WORD:8 4.666666666666666 (word~) print_word::w#9 w zp ZP_WORD:8 4.0 -(signed word()) signed_multiply((signed byte) signed_multiply::a , (signed byte) signed_multiply::b) -(byte~) signed_multiply::$12 reg byte a 4.0 -(byte/signed byte/word/signed word/dword/signed dword~) signed_multiply::$16 reg byte a 4.0 -(byte/signed byte/word/signed word/dword/signed dword~) signed_multiply::$17 reg byte a 4.0 -(byte~) signed_multiply::$6 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 reg byte y 7.357142857142858 -(signed byte) signed_multiply::b -(signed byte) signed_multiply::b#0 b zp ZP_BYTE:3 9.363636363636363 -(word) signed_multiply::m -(word) signed_multiply::m#0 m zp ZP_WORD:12 2.0 -(word) signed_multiply::m#1 m zp ZP_WORD:12 4.0 -(word) signed_multiply::m#2 m zp ZP_WORD:12 4.0 -(word) signed_multiply::m#4 m zp ZP_WORD:12 1.3333333333333333 -(word) signed_multiply::m#5 m zp ZP_WORD:12 2.5 -(signed word) signed_multiply::return -(signed word) signed_multiply::return#2 return zp ZP_WORD:12 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 @@ -10737,79 +10774,38 @@ FINAL SYMBOL TABLE (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 -(label) slow_multiply::@return -(byte) slow_multiply::a -(byte) slow_multiply::a#0 a zp ZP_BYTE:2 157.71428571428572 -(byte) slow_multiply::b -(byte) slow_multiply::b#0 reg byte x 183.66666666666669 -(byte) slow_multiply::i -(byte) slow_multiply::i#1 reg byte y 1501.5 -(byte) slow_multiply::i#2 reg byte y 1001.0 -(word) slow_multiply::m -(word) slow_multiply::m#1 m zp ZP_WORD:8 1001.0 -(word) slow_multiply::m#3 m zp ZP_WORD:8 2002.0 -(word) slow_multiply::return -(word) slow_multiply::return#0 return zp ZP_WORD:8 367.33333333333337 -(word) slow_multiply::return#2 return zp ZP_WORD:8 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:8 1001.0 -(signed word) slow_signed_multiply::m#2 m zp ZP_WORD:8 1001.0 -(signed word) slow_signed_multiply::m#3 m zp ZP_WORD:8 2002.0 -(signed word) slow_signed_multiply::m#5 m zp ZP_WORD:8 2002.0 -(signed word) slow_signed_multiply::return -(signed word) slow_signed_multiply::return#0 return zp ZP_WORD:8 701.0 -(signed word) slow_signed_multiply::return#2 return zp ZP_WORD:8 202.0 -zp ZP_BYTE:2 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::a#1 slow_signed_multiply::a#0 multiply_results_compare::a#6 multiply_results_compare::a#1 slow_multiply::a#0 init_multiply::x_2#3 init_multiply::x_2#2 init_multiply::x_2#1 init_multiply::dir#2 init_multiply::dir#3 ] -zp ZP_BYTE:3 [ signed_multiply_results_compare::b#2 signed_multiply_results_compare::b#1 signed_multiply::b#0 signed_multiply_error::b#0 multiply_results_compare::b#2 multiply_results_compare::b#1 multiply_error::b#0 ] -zp ZP_WORD:4 [ line_cursor#23 line_cursor#45 line_cursor#10 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 init_multiply::sqr1_hi#2 init_multiply::sqr1_hi#1 init_multiply::sqr2_hi#2 init_multiply::sqr2_hi#1 ] -zp ZP_WORD:8 [ 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#9 print_word::w#10 print_word::w#11 multiply_tables_compare::asm_sqr#2 multiply_tables_compare::asm_sqr#1 signed_multiply_error::ms#0 signed_multiply_results_compare::ms#0 slow_signed_multiply::return#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 multiply_error::ms#0 multiply_results_compare::ms#0 slow_multiply::return#2 slow_multiply::return#0 slow_multiply::m#3 slow_multiply::m#1 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 muls8s::a#0 multiply_results_compare::a#6 multiply_results_compare::a#1 muls8u::a#0 mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 mulf_init::dir#2 mulf_init::dir#3 ] +zp ZP_BYTE:3 [ signed_multiply_results_compare::b#2 signed_multiply_results_compare::b#1 mulf8s::b#0 signed_multiply_error::b#0 multiply_results_compare::b#2 multiply_results_compare::b#1 multiply_error::b#0 ] +zp ZP_WORD:4 [ line_cursor#23 line_cursor#45 line_cursor#10 line_cursor#1 multiply_tables_compare::kc_sqr#2 multiply_tables_compare::kc_sqr#1 mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 mulf_init::sqr2_lo#2 mulf_init::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 mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] +zp ZP_WORD:8 [ 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#9 print_word::w#10 print_word::w#11 multiply_tables_compare::asm_sqr#2 multiply_tables_compare::asm_sqr#1 signed_multiply_error::ms#0 signed_multiply_results_compare::ms#0 muls8s::return#2 muls8s::m#5 muls8s::return#0 muls8s::m#3 muls8s::m#1 muls8s::m#2 multiply_error::ms#0 multiply_results_compare::ms#0 muls8u::return#2 muls8u::return#0 muls8u::m#3 muls8u::m#1 mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] reg byte x [ print_byte::b#5 print_byte::b#3 print_byte::b#4 print_byte::b#9 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:10 [ char_cursor#78 char_cursor#129 char_cursor#128 char_cursor#124 char_cursor#141 char_cursor#30 char_cursor#123 char_cursor#17 char_cursor#122 char_cursor#176 char_cursor#180 char_cursor#1 char_cursor#126 char_cursor#201 ] reg byte x [ print_sbyte::b#4 print_sbyte::b#3 print_sbyte::b#1 print_sbyte::b#2 print_sbyte::b#0 ] -zp ZP_WORD:12 [ signed_multiply::m#4 signed_multiply::m#5 signed_multiply::m#1 signed_multiply::m#0 signed_multiply::m#2 signed_multiply::return#2 signed_multiply_results_compare::ma#0 signed_multiply_error::ma#0 multiply::return#2 multiply::return#0 multiply::return#3 multiply_results_compare::ma#0 multiply_error::ma#0 ] -reg byte a [ multiply::a#2 multiply::a#1 multiply::a#4 ] -reg byte x [ multiply::b#2 multiply::b#1 multiply::b#4 ] -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 ] -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_signed_multiply::b#0 ] -reg byte y [ signed_multiply::a#0 ] +zp ZP_WORD:12 [ mulf8s::m#4 mulf8s::m#5 mulf8s::m#1 mulf8s::m#0 mulf8s::m#2 mulf8s::return#2 signed_multiply_results_compare::ma#0 signed_multiply_error::ma#0 mulf8u::return#2 mulf8u::return#0 mulf8u::return#3 multiply_results_compare::ma#0 multiply_error::ma#0 ] +reg byte a [ mulf8u::a#2 mulf8u::a#3 mulf8u::a#1 ] +reg byte x [ mulf8u::b#2 mulf8u::b#3 mulf8u::b#1 ] +reg byte y [ muls8s::i#2 muls8s::i#1 ] +reg byte y [ muls8s::j#2 muls8s::j#1 ] +reg byte y [ muls8u::i#2 muls8u::i#1 ] +reg byte x [ mulf_init::c#2 mulf_init::c#1 ] +reg byte x [ mulf_init::x_255#2 mulf_init::x_255#1 ] +reg byte x [ muls8s::b#0 ] +reg byte y [ mulf8s::a#0 ] reg byte x [ signed_multiply_error::a#0 ] reg byte a [ print_byte::$0 ] reg byte a [ print_byte::$2 ] -reg byte a [ signed_multiply::$6 ] -reg byte a [ signed_multiply::$16 ] -reg byte a [ signed_multiply::$12 ] -reg byte a [ signed_multiply::$17 ] -reg byte x [ slow_multiply::b#0 ] +reg byte a [ mulf8s::$6 ] +reg byte a [ mulf8s::$16 ] +reg byte a [ mulf8s::$12 ] +reg byte a [ mulf8s::$17 ] +reg byte x [ muls8u::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 ] +reg byte a [ mulf_init::$2 ] +reg byte a [ mulf_init::$5 ] +reg byte a [ mulf_init::$6 ] FINAL ASSEMBLER @@ -10841,13 +10837,13 @@ main: { 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 [229] phi from main::@1 to init_multiply [phi:main::@1->init_multiply] - jsr init_multiply + //SEG14 [7] call mulf_init param-assignment [ ] ( main:2 [ ] ) + //SEG15 [229] phi from main::@1 to mulf_init [phi:main::@1->mulf_init] + jsr mulf_init //SEG16 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] //SEG17 main::@2 - //SEG18 [9] call init_multiply_asm param-assignment [ ] ( main:2 [ ] ) - jsr init_multiply_asm + //SEG18 [9] call mulf_init_asm param-assignment [ ] ( main:2 [ ] ) + jsr mulf_init_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#10 char_cursor#30 ] ( main:2 [ line_cursor#10 char_cursor#30 ] ) @@ -10889,28 +10885,28 @@ signed_multiply_results_compare: { //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: - //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 + //SEG44 [20] (signed byte) muls8s::a#0 ← (signed byte) signed_multiply_results_compare::a#6 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 muls8s::a#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 muls8s::a#0 line_cursor#1 ] ) + // (signed byte) muls8s::a#0 = (signed byte) signed_multiply_results_compare::a#6 // register copy zp ZP_BYTE:2 + //SEG45 [21] (signed byte) muls8s::b#0 ← (signed byte) signed_multiply_results_compare::b#2 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 muls8s::a#0 muls8s::b#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 muls8s::a#0 muls8s::b#0 line_cursor#1 ] ) -- vbsxx=vbsz1 ldx 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 ] ) - // (signed word) slow_signed_multiply::return#2 = (signed word) slow_signed_multiply::return#0 // register copy zp ZP_WORD:8 + //SEG46 [22] call muls8s param-assignment [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 muls8s::return#0 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 muls8s::return#0 line_cursor#1 ] ) + jsr muls8s + //SEG47 [23] (signed word) muls8s::return#2 ← (signed word) muls8s::return#0 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 muls8s::return#2 line_cursor#1 ] ( main:2::signed_multiply_results_compare:15 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 muls8s::return#2 line_cursor#1 ] ) + // (signed word) muls8s::return#2 = (signed word) muls8s::return#0 // register copy zp ZP_WORD:8 //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 ] ) - // (signed word) signed_multiply_results_compare::ms#0 = (signed word) slow_signed_multiply::return#2 // register copy zp ZP_WORD:8 - //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 ] ) -- vbsyy=vbsz1 + //SEG49 [24] (signed word) signed_multiply_results_compare::ms#0 ← (signed word) muls8s::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 ] ) + // (signed word) signed_multiply_results_compare::ms#0 = (signed word) muls8s::return#2 // register copy zp ZP_WORD:8 + //SEG50 [25] (signed byte) mulf8s::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 mulf8s::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 mulf8s::a#0 line_cursor#1 ] ) -- vbsyy=vbsz1 ldy 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 ] ) - // (signed byte) signed_multiply::b#0 = (signed byte) signed_multiply_results_compare::b#2 // register copy zp ZP_BYTE:3 - //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::m#4 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::m#4 line_cursor#1 ] ) - jsr signed_multiply - //SEG53 [28] (signed word) signed_multiply::return#2 ← (signed word)(word) signed_multiply::m#4 [ 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)(word) signed_multiply::m#4 // register copy zp ZP_WORD:12 + //SEG51 [26] (signed byte) mulf8s::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 mulf8s::a#0 mulf8s::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 mulf8s::a#0 mulf8s::b#0 line_cursor#1 ] ) + // (signed byte) mulf8s::b#0 = (signed byte) signed_multiply_results_compare::b#2 // register copy zp ZP_BYTE:3 + //SEG52 [27] call mulf8s param-assignment [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 mulf8s::m#4 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 mulf8s::m#4 line_cursor#1 ] ) + jsr mulf8s + //SEG53 [28] (signed word) mulf8s::return#2 ← (signed word)(word) mulf8s::m#4 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 mulf8s::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 mulf8s::return#2 line_cursor#1 ] ) + // (signed word) mulf8s::return#2 = (signed word)(word) mulf8s::m#4 // register copy zp ZP_WORD:12 //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:12 + //SEG55 [29] (signed word) signed_multiply_results_compare::ma#0 ← (signed word) mulf8s::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) mulf8s::return#2 // register copy zp ZP_WORD:12 //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 @@ -11284,71 +11280,71 @@ print_sbyte: { //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: { +//SEG233 mulf8s +mulf8s: { .label m = $c .label b = 3 .label return = $c - //SEG234 [113] (byte~) multiply::a#4 ← (byte)(signed byte) signed_multiply::a#0 [ signed_multiply::a#0 signed_multiply::b#0 multiply::a#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::a#0 signed_multiply::b#0 multiply::a#4 ] ) -- vbuaa=vbuyy + //SEG234 [113] (byte~) mulf8u::a#3 ← (byte)(signed byte) mulf8s::a#0 [ mulf8s::a#0 mulf8s::b#0 mulf8u::a#3 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::a#0 mulf8s::b#0 mulf8u::a#3 ] ) -- vbuaa=vbuyy tya - //SEG235 [114] (byte~) multiply::b#4 ← (byte)(signed byte) signed_multiply::b#0 [ signed_multiply::a#0 signed_multiply::b#0 multiply::a#4 multiply::b#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::a#0 signed_multiply::b#0 multiply::a#4 multiply::b#4 ] ) -- vbuxx=vbuz1 + //SEG235 [114] (byte~) mulf8u::b#3 ← (byte)(signed byte) mulf8s::b#0 [ mulf8s::a#0 mulf8s::b#0 mulf8u::a#3 mulf8u::b#3 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::a#0 mulf8s::b#0 mulf8u::a#3 mulf8u::b#3 ] ) -- vbuxx=vbuz1 ldx 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 [129] phi from signed_multiply to multiply [phi:signed_multiply->multiply] - //SEG238 [129] phi (byte) multiply::b#2 = (byte~) multiply::b#4 [phi:signed_multiply->multiply#0] -- register_copy - //SEG239 [129] phi (byte) multiply::a#2 = (byte~) multiply::a#4 [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:12 - //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:12 - //SEG243 [118] if((signed byte) signed_multiply::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 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 ] ) -- vbsyy_ge_0_then_la1 + //SEG236 [115] call mulf8u param-assignment [ mulf8s::a#0 mulf8s::b#0 mulf8u::return#0 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::a#0 mulf8s::b#0 mulf8u::return#0 ] ) + //SEG237 [129] phi from mulf8s to mulf8u [phi:mulf8s->mulf8u] + //SEG238 [129] phi (byte) mulf8u::b#2 = (byte~) mulf8u::b#3 [phi:mulf8s->mulf8u#0] -- register_copy + //SEG239 [129] phi (byte) mulf8u::a#2 = (byte~) mulf8u::a#3 [phi:mulf8s->mulf8u#1] -- register_copy + jsr mulf8u + //SEG240 [116] (word) mulf8u::return#2 ← (word) mulf8u::return#0 [ mulf8s::a#0 mulf8s::b#0 mulf8u::return#2 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::a#0 mulf8s::b#0 mulf8u::return#2 ] ) + // (word) mulf8u::return#2 = (word) mulf8u::return#0 // register copy zp ZP_WORD:12 + //SEG241 mulf8s::@6 + //SEG242 [117] (word) mulf8s::m#0 ← (word) mulf8u::return#2 [ mulf8s::a#0 mulf8s::b#0 mulf8s::m#0 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::a#0 mulf8s::b#0 mulf8s::m#0 ] ) + // (word) mulf8s::m#0 = (word) mulf8u::return#2 // register copy zp ZP_WORD:12 + //SEG243 [118] if((signed byte) mulf8s::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s::@1 [ mulf8s::a#0 mulf8s::b#0 mulf8s::m#0 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::a#0 mulf8s::b#0 mulf8s::m#0 ] ) -- vbsyy_ge_0_then_la1 cpy #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 ] ) -- vbuaa=_hi_vwuz1 + //SEG244 mulf8s::@3 + //SEG245 [119] (byte~) mulf8s::$6 ← > (word) mulf8s::m#0 [ mulf8s::a#0 mulf8s::b#0 mulf8s::m#0 mulf8s::$6 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::a#0 mulf8s::b#0 mulf8s::m#0 mulf8s::$6 ] ) -- vbuaa=_hi_vwuz1 lda m+1 - //SEG246 [120] (byte/signed byte/word/signed word/dword/signed dword~) signed_multiply::$16 ← (byte~) signed_multiply::$6 - (byte)(signed byte) signed_multiply::b#0 [ 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=vbuaa_minus_vbuz1 + //SEG246 [120] (byte/signed byte/word/signed word/dword/signed dword~) mulf8s::$16 ← (byte~) mulf8s::$6 - (byte)(signed byte) mulf8s::b#0 [ mulf8s::a#0 mulf8s::b#0 mulf8s::m#0 mulf8s::$16 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::a#0 mulf8s::b#0 mulf8s::m#0 mulf8s::$16 ] ) -- vbuaa=vbuaa_minus_vbuz1 sec sbc b - //SEG247 [121] (word) signed_multiply::m#1 ← (word) signed_multiply::m#0 hi= (byte/signed byte/word/signed word/dword/signed dword~) 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 + //SEG247 [121] (word) mulf8s::m#1 ← (word) mulf8s::m#0 hi= (byte/signed byte/word/signed word/dword/signed dword~) mulf8s::$16 [ mulf8s::a#0 mulf8s::b#0 mulf8s::m#1 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::a#0 mulf8s::b#0 mulf8s::m#1 ] ) -- vwuz1=vwuz1_sethi_vbuaa sta m+1 - //SEG248 [122] phi from signed_multiply::@3 signed_multiply::@6 to signed_multiply::@1 [phi:signed_multiply::@3/signed_multiply::@6->signed_multiply::@1] - //SEG249 [122] phi (word) signed_multiply::m#5 = (word) signed_multiply::m#1 [phi:signed_multiply::@3/signed_multiply::@6->signed_multiply::@1#0] -- register_copy - //SEG250 signed_multiply::@1 + //SEG248 [122] phi from mulf8s::@3 mulf8s::@6 to mulf8s::@1 [phi:mulf8s::@3/mulf8s::@6->mulf8s::@1] + //SEG249 [122] phi (word) mulf8s::m#5 = (word) mulf8s::m#1 [phi:mulf8s::@3/mulf8s::@6->mulf8s::@1#0] -- register_copy + //SEG250 mulf8s::@1 b1: - //SEG251 [123] if((signed byte) signed_multiply::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 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 + //SEG251 [123] if((signed byte) mulf8s::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s::@2 [ mulf8s::a#0 mulf8s::m#5 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::a#0 mulf8s::m#5 ] ) -- vbsz1_ge_0_then_la1 lda b cmp #0 bpl b2 - //SEG252 signed_multiply::@4 - //SEG253 [124] (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 ] ) -- vbuaa=_hi_vwuz1 + //SEG252 mulf8s::@4 + //SEG253 [124] (byte~) mulf8s::$12 ← > (word) mulf8s::m#5 [ mulf8s::a#0 mulf8s::m#5 mulf8s::$12 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::a#0 mulf8s::m#5 mulf8s::$12 ] ) -- vbuaa=_hi_vwuz1 lda m+1 - //SEG254 [125] (byte/signed byte/word/signed word/dword/signed dword~) signed_multiply::$17 ← (byte~) signed_multiply::$12 - (byte)(signed byte) signed_multiply::a#0 [ 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=vbuaa_minus_vbuyy + //SEG254 [125] (byte/signed byte/word/signed word/dword/signed dword~) mulf8s::$17 ← (byte~) mulf8s::$12 - (byte)(signed byte) mulf8s::a#0 [ mulf8s::m#5 mulf8s::$17 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::m#5 mulf8s::$17 ] ) -- vbuaa=vbuaa_minus_vbuyy sty $ff sec sbc $ff - //SEG255 [126] (word) signed_multiply::m#2 ← (word) signed_multiply::m#5 hi= (byte/signed byte/word/signed word/dword/signed dword~) 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 + //SEG255 [126] (word) mulf8s::m#2 ← (word) mulf8s::m#5 hi= (byte/signed byte/word/signed word/dword/signed dword~) mulf8s::$17 [ mulf8s::m#2 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::m#2 ] ) -- vwuz1=vwuz1_sethi_vbuaa sta m+1 - //SEG256 [127] phi from signed_multiply::@1 signed_multiply::@4 to signed_multiply::@2 [phi:signed_multiply::@1/signed_multiply::@4->signed_multiply::@2] - //SEG257 [127] phi (word) signed_multiply::m#4 = (word) signed_multiply::m#5 [phi:signed_multiply::@1/signed_multiply::@4->signed_multiply::@2#0] -- register_copy - //SEG258 signed_multiply::@2 + //SEG256 [127] phi from mulf8s::@1 mulf8s::@4 to mulf8s::@2 [phi:mulf8s::@1/mulf8s::@4->mulf8s::@2] + //SEG257 [127] phi (word) mulf8s::m#4 = (word) mulf8s::m#5 [phi:mulf8s::@1/mulf8s::@4->mulf8s::@2#0] -- register_copy + //SEG258 mulf8s::@2 b2: - //SEG259 signed_multiply::@return - //SEG260 [128] return [ 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 ] ) + //SEG259 mulf8s::@return + //SEG260 [128] return [ mulf8s::m#4 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::m#4 ] ) rts } -//SEG261 multiply -multiply: { +//SEG261 mulf8u +mulf8u: { .label memA = $fe .label memB = $ff .label return = $c - //SEG262 [130] *((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:157 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply::b#2 ] ) -- _deref_pbuc1=vbuaa + //SEG262 [130] *((const byte*) mulf8u::memA#0) ← (byte) mulf8u::a#2 [ mulf8u::b#2 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27::mulf8u:115 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::a#0 mulf8s::b#0 mulf8u::b#2 ] main:2::multiply_results_compare:13::mulf8u:157 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 mulf8u::b#2 ] ) -- _deref_pbuc1=vbuaa sta memA - //SEG263 [131] *((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:157 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ) -- _deref_pbuc1=vbuxx + //SEG263 [131] *((const byte*) mulf8u::memB#0) ← (byte) mulf8u::b#2 [ ] ( main:2::signed_multiply_results_compare:15::mulf8s:27::mulf8u:115 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::a#0 mulf8s::b#0 ] main:2::multiply_results_compare:13::mulf8u:157 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ) -- _deref_pbuc1=vbuxx stx memB - //SEG264 asm { ldamemA stasm1+1 stasm3+1 eor#$ff stasm2+1 stasm4+1 ldxmemB sec sm1: ldamul_sqr1_lo,x sm2: sbcmul_sqr2_lo,x stamemA sm3: ldamul_sqr1_hi,x sm4: sbcmul_sqr2_hi,x stamemB } + //SEG264 asm { ldamemA stasm1+1 stasm3+1 eor#$ff stasm2+1 stasm4+1 ldxmemB sec sm1: ldamulf_sqr1_lo,x sm2: sbcmulf_sqr2_lo,x stamemA sm3: ldamulf_sqr1_hi,x sm4: sbcmulf_sqr2_hi,x stamemB } sta sm1+1 sta sm3+1 eor #$ff @@ -11356,46 +11352,46 @@ multiply: { sta sm4+1 sec sm1: - lda mul_sqr1_lo,x + lda mulf_sqr1_lo,x sm2: - sbc mul_sqr2_lo,x + sbc mulf_sqr2_lo,x sta memA sm3: - lda mul_sqr1_hi,x + lda mulf_sqr1_hi,x sm4: - sbc mul_sqr2_hi,x + sbc mulf_sqr2_hi,x sta memB - //SEG265 [133] (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:157 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply::return#0 ] ) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 + //SEG265 [133] (word) mulf8u::return#0 ← *((const byte*) mulf8u::memB#0) w= *((const byte*) mulf8u::memA#0) [ mulf8u::return#0 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27::mulf8u:115 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::a#0 mulf8s::b#0 mulf8u::return#0 ] main:2::multiply_results_compare:13::mulf8u:157 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 mulf8u::return#0 ] ) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 lda memA sta return lda memB sta return+1 - //SEG266 multiply::@return - //SEG267 [134] 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:157 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 multiply::return#0 ] ) + //SEG266 mulf8u::@return + //SEG267 [134] return [ mulf8u::return#0 ] ( main:2::signed_multiply_results_compare:15::mulf8s:27::mulf8u:115 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 signed_multiply_results_compare::ms#0 line_cursor#1 mulf8s::a#0 mulf8s::b#0 mulf8u::return#0 ] main:2::multiply_results_compare:13::mulf8u:157 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 mulf8u::return#0 ] ) rts } -//SEG268 slow_signed_multiply -slow_signed_multiply: { +//SEG268 muls8s +muls8s: { .label m = 8 .label return = 8 .label a = 2 - //SEG269 [135] if((signed byte) slow_signed_multiply::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 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 + //SEG269 [135] if((signed byte) muls8s::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls8s::@1 [ muls8s::a#0 muls8s::b#0 ] ( main:2::signed_multiply_results_compare:15::muls8s:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 muls8s::a#0 muls8s::b#0 ] ) -- vbsz1_ge_0_then_la1 lda a cmp #0 bpl b1 - //SEG270 [136] phi from slow_signed_multiply to slow_signed_multiply::@2 [phi:slow_signed_multiply->slow_signed_multiply::@2] - //SEG271 [136] phi (signed byte) slow_signed_multiply::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:slow_signed_multiply->slow_signed_multiply::@2#0] -- vbsyy=vbuc1 + //SEG270 [136] phi from muls8s to muls8s::@2 [phi:muls8s->muls8s::@2] + //SEG271 [136] phi (signed byte) muls8s::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8s->muls8s::@2#0] -- vbsyy=vbuc1 lda #0 tay - //SEG272 [136] phi (signed word) slow_signed_multiply::m#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:slow_signed_multiply->slow_signed_multiply::@2#1] -- vwsz1=vbuc1 + //SEG272 [136] phi (signed word) muls8s::m#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8s->muls8s::@2#1] -- vwsz1=vbuc1 sta m sta m+1 - //SEG273 [136] phi from slow_signed_multiply::@2 to slow_signed_multiply::@2 [phi:slow_signed_multiply::@2->slow_signed_multiply::@2] - //SEG274 [136] 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 - //SEG275 [136] 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 - //SEG276 slow_signed_multiply::@2 + //SEG273 [136] phi from muls8s::@2 to muls8s::@2 [phi:muls8s::@2->muls8s::@2] + //SEG274 [136] phi (signed byte) muls8s::i#2 = (signed byte) muls8s::i#1 [phi:muls8s::@2->muls8s::@2#0] -- register_copy + //SEG275 [136] phi (signed word) muls8s::m#3 = (signed word) muls8s::m#1 [phi:muls8s::@2->muls8s::@2#1] -- register_copy + //SEG276 muls8s::@2 b2: - //SEG277 [137] (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 + //SEG277 [137] (signed word) muls8s::m#1 ← (signed word) muls8s::m#3 - (signed byte) muls8s::b#0 [ muls8s::a#0 muls8s::b#0 muls8s::i#2 muls8s::m#1 ] ( main:2::signed_multiply_results_compare:15::muls8s:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 muls8s::a#0 muls8s::b#0 muls8s::i#2 muls8s::m#1 ] ) -- vwsz1=vwsz1_minus_vbsxx txa sta $fe ora #$7f @@ -11410,44 +11406,44 @@ slow_signed_multiply: { lda m+1 sbc $ff sta m+1 - //SEG278 [138] (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 + //SEG278 [138] (signed byte) muls8s::i#1 ← -- (signed byte) muls8s::i#2 [ muls8s::a#0 muls8s::b#0 muls8s::m#1 muls8s::i#1 ] ( main:2::signed_multiply_results_compare:15::muls8s:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 muls8s::a#0 muls8s::b#0 muls8s::m#1 muls8s::i#1 ] ) -- vbsyy=_dec_vbsyy dey - //SEG279 [139] 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 + //SEG279 [139] if((signed byte) muls8s::i#1!=(signed byte) muls8s::a#0) goto muls8s::@2 [ muls8s::a#0 muls8s::b#0 muls8s::m#1 muls8s::i#1 ] ( main:2::signed_multiply_results_compare:15::muls8s:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 muls8s::a#0 muls8s::b#0 muls8s::m#1 muls8s::i#1 ] ) -- vbsyy_neq_vbsz1_then_la1 cpy a bne b2 - //SEG280 [140] 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] - //SEG281 [140] 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 + //SEG280 [140] phi from muls8s::@2 muls8s::@5 to muls8s::@3 [phi:muls8s::@2/muls8s::@5->muls8s::@3] + //SEG281 [140] phi (signed word) muls8s::return#0 = (signed word) muls8s::m#1 [phi:muls8s::@2/muls8s::@5->muls8s::@3#0] -- register_copy jmp b3 - //SEG282 [140] phi from slow_signed_multiply::@1 to slow_signed_multiply::@3 [phi:slow_signed_multiply::@1->slow_signed_multiply::@3] + //SEG282 [140] phi from muls8s::@1 to muls8s::@3 [phi:muls8s::@1->muls8s::@3] b6: - //SEG283 [140] phi (signed word) slow_signed_multiply::return#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:slow_signed_multiply::@1->slow_signed_multiply::@3#0] -- vwsz1=vbuc1 + //SEG283 [140] phi (signed word) muls8s::return#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8s::@1->muls8s::@3#0] -- vwsz1=vbuc1 lda #0 sta return sta return+1 - //SEG284 slow_signed_multiply::@3 + //SEG284 muls8s::@3 b3: - //SEG285 slow_signed_multiply::@return - //SEG286 [141] 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 ] ) + //SEG285 muls8s::@return + //SEG286 [141] return [ muls8s::return#0 ] ( main:2::signed_multiply_results_compare:15::muls8s:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 muls8s::return#0 ] ) rts - //SEG287 slow_signed_multiply::@1 + //SEG287 muls8s::@1 b1: - //SEG288 [142] if((signed byte) slow_signed_multiply::a#0<=(byte/signed byte/word/signed word/dword/signed dword) 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 + //SEG288 [142] if((signed byte) muls8s::a#0<=(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls8s::@3 [ muls8s::a#0 muls8s::b#0 ] ( main:2::signed_multiply_results_compare:15::muls8s:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 muls8s::a#0 muls8s::b#0 ] ) -- vbsz1_le_0_then_la1 lda a cmp #1 bmi b6 - //SEG289 [143] phi from slow_signed_multiply::@1 to slow_signed_multiply::@5 [phi:slow_signed_multiply::@1->slow_signed_multiply::@5] - //SEG290 [143] phi (signed byte) slow_signed_multiply::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:slow_signed_multiply::@1->slow_signed_multiply::@5#0] -- vbsyy=vbuc1 + //SEG289 [143] phi from muls8s::@1 to muls8s::@5 [phi:muls8s::@1->muls8s::@5] + //SEG290 [143] phi (signed byte) muls8s::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8s::@1->muls8s::@5#0] -- vbsyy=vbuc1 lda #0 tay - //SEG291 [143] phi (signed word) slow_signed_multiply::m#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:slow_signed_multiply::@1->slow_signed_multiply::@5#1] -- vwsz1=vbuc1 + //SEG291 [143] phi (signed word) muls8s::m#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8s::@1->muls8s::@5#1] -- vwsz1=vbuc1 sta m sta m+1 - //SEG292 [143] phi from slow_signed_multiply::@5 to slow_signed_multiply::@5 [phi:slow_signed_multiply::@5->slow_signed_multiply::@5] - //SEG293 [143] 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 - //SEG294 [143] 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 - //SEG295 slow_signed_multiply::@5 + //SEG292 [143] phi from muls8s::@5 to muls8s::@5 [phi:muls8s::@5->muls8s::@5] + //SEG293 [143] phi (signed byte) muls8s::j#2 = (signed byte) muls8s::j#1 [phi:muls8s::@5->muls8s::@5#0] -- register_copy + //SEG294 [143] phi (signed word) muls8s::m#5 = (signed word) muls8s::m#2 [phi:muls8s::@5->muls8s::@5#1] -- register_copy + //SEG295 muls8s::@5 b5: - //SEG296 [144] (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 + //SEG296 [144] (signed word) muls8s::m#2 ← (signed word) muls8s::m#5 + (signed byte) muls8s::b#0 [ muls8s::a#0 muls8s::b#0 muls8s::m#2 muls8s::j#2 ] ( main:2::signed_multiply_results_compare:15::muls8s:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 muls8s::a#0 muls8s::b#0 muls8s::m#2 muls8s::j#2 ] ) -- vwsz1=vwsz1_plus_vbsxx txa sta $fe ora #$7f @@ -11462,9 +11458,9 @@ slow_signed_multiply: { lda m+1 adc $ff sta m+1 - //SEG297 [145] (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 + //SEG297 [145] (signed byte) muls8s::j#1 ← ++ (signed byte) muls8s::j#2 [ muls8s::a#0 muls8s::b#0 muls8s::m#2 muls8s::j#1 ] ( main:2::signed_multiply_results_compare:15::muls8s:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 muls8s::a#0 muls8s::b#0 muls8s::m#2 muls8s::j#1 ] ) -- vbsyy=_inc_vbsyy iny - //SEG298 [146] 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 + //SEG298 [146] if((signed byte) muls8s::j#1!=(signed byte) muls8s::a#0) goto muls8s::@5 [ muls8s::a#0 muls8s::b#0 muls8s::m#2 muls8s::j#1 ] ( main:2::signed_multiply_results_compare:15::muls8s:22 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::b#2 line_cursor#1 muls8s::a#0 muls8s::b#0 muls8s::m#2 muls8s::j#1 ] ) -- vbsyy_neq_vbsz1_then_la1 cpy a bne b5 jmp b3 @@ -11491,31 +11487,31 @@ multiply_results_compare: { //SEG308 [149] 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 //SEG309 multiply_results_compare::@2 b2: - //SEG310 [150] (byte) slow_multiply::a#0 ← (byte) multiply_results_compare::a#6 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::a#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#10 char_cursor#30 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 - //SEG311 [151] (byte) slow_multiply::b#0 ← (byte) multiply_results_compare::b#2 [ line_cursor#10 char_cursor#30 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#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::a#0 slow_multiply::b#0 ] ) -- vbuxx=vbuz1 + //SEG310 [150] (byte) muls8u::a#0 ← (byte) multiply_results_compare::a#6 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 muls8u::a#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 muls8u::a#0 ] ) + // (byte) muls8u::a#0 = (byte) multiply_results_compare::a#6 // register copy zp ZP_BYTE:2 + //SEG311 [151] (byte) muls8u::b#0 ← (byte) multiply_results_compare::b#2 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 muls8u::a#0 muls8u::b#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 muls8u::a#0 muls8u::b#0 ] ) -- vbuxx=vbuz1 ldx b - //SEG312 [152] call slow_multiply param-assignment [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::return#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::return#0 ] ) - jsr slow_multiply - //SEG313 [153] (word) slow_multiply::return#2 ← (word) slow_multiply::return#0 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::return#2 ] ( main:2::multiply_results_compare:13 [ line_cursor#10 char_cursor#30 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:8 + //SEG312 [152] call muls8u param-assignment [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 muls8u::return#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 muls8u::return#0 ] ) + jsr muls8u + //SEG313 [153] (word) muls8u::return#2 ← (word) muls8u::return#0 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 muls8u::return#2 ] ( main:2::multiply_results_compare:13 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 muls8u::return#2 ] ) + // (word) muls8u::return#2 = (word) muls8u::return#0 // register copy zp ZP_WORD:8 //SEG314 multiply_results_compare::@8 - //SEG315 [154] (word) multiply_results_compare::ms#0 ← (word) slow_multiply::return#2 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ) - // (word) multiply_results_compare::ms#0 = (word) slow_multiply::return#2 // register copy zp ZP_WORD:8 - //SEG316 [155] (byte) multiply::a#1 ← (byte) multiply_results_compare::a#6 [ line_cursor#10 char_cursor#30 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#10 char_cursor#30 multiply::a#1 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ) -- vbuaa=vbuz1 + //SEG315 [154] (word) multiply_results_compare::ms#0 ← (word) muls8u::return#2 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ( main:2::multiply_results_compare:13 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ) + // (word) multiply_results_compare::ms#0 = (word) muls8u::return#2 // register copy zp ZP_WORD:8 + //SEG316 [155] (byte) mulf8u::a#1 ← (byte) multiply_results_compare::a#6 [ line_cursor#10 char_cursor#30 mulf8u::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#10 char_cursor#30 mulf8u::a#1 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ) -- vbuaa=vbuz1 lda a - //SEG317 [156] (byte) multiply::b#1 ← (byte) multiply_results_compare::b#2 [ line_cursor#10 char_cursor#30 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#10 char_cursor#30 multiply::a#1 multiply::b#1 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ) -- vbuxx=vbuz1 + //SEG317 [156] (byte) mulf8u::b#1 ← (byte) multiply_results_compare::b#2 [ line_cursor#10 char_cursor#30 mulf8u::a#1 mulf8u::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#10 char_cursor#30 mulf8u::a#1 mulf8u::b#1 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ) -- vbuxx=vbuz1 ldx b - //SEG318 [157] call multiply param-assignment [ line_cursor#10 char_cursor#30 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#10 char_cursor#30 multiply::return#0 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ) - //SEG319 [129] phi from multiply_results_compare::@8 to multiply [phi:multiply_results_compare::@8->multiply] - //SEG320 [129] phi (byte) multiply::b#2 = (byte) multiply::b#1 [phi:multiply_results_compare::@8->multiply#0] -- register_copy - //SEG321 [129] phi (byte) multiply::a#2 = (byte) multiply::a#1 [phi:multiply_results_compare::@8->multiply#1] -- register_copy - jsr multiply - //SEG322 [158] (word) multiply::return#3 ← (word) multiply::return#0 [ line_cursor#10 char_cursor#30 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#10 char_cursor#30 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:12 + //SEG318 [157] call mulf8u param-assignment [ line_cursor#10 char_cursor#30 mulf8u::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#10 char_cursor#30 mulf8u::return#0 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 ] ) + //SEG319 [129] phi from multiply_results_compare::@8 to mulf8u [phi:multiply_results_compare::@8->mulf8u] + //SEG320 [129] phi (byte) mulf8u::b#2 = (byte) mulf8u::b#1 [phi:multiply_results_compare::@8->mulf8u#0] -- register_copy + //SEG321 [129] phi (byte) mulf8u::a#2 = (byte) mulf8u::a#1 [phi:multiply_results_compare::@8->mulf8u#1] -- register_copy + jsr mulf8u + //SEG322 [158] (word) mulf8u::return#3 ← (word) mulf8u::return#0 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 mulf8u::return#3 ] ( main:2::multiply_results_compare:13 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 multiply_results_compare::ms#0 mulf8u::return#3 ] ) + // (word) mulf8u::return#3 = (word) mulf8u::return#0 // register copy zp ZP_WORD:12 //SEG323 multiply_results_compare::@9 - //SEG324 [159] (word) multiply_results_compare::ma#0 ← (word) multiply::return#3 [ line_cursor#10 char_cursor#30 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#10 char_cursor#30 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:12 + //SEG324 [159] (word) multiply_results_compare::ma#0 ← (word) mulf8u::return#3 [ line_cursor#10 char_cursor#30 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#10 char_cursor#30 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) mulf8u::return#3 // register copy zp ZP_WORD:12 //SEG325 [160] if((word) multiply_results_compare::ms#0==(word) multiply_results_compare::ma#0) goto multiply_results_compare::@3 [ line_cursor#10 char_cursor#30 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#10 char_cursor#30 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 @@ -11674,27 +11670,27 @@ multiply_error: { str2: .text " slow:@" str3: .text " / fast asm:@" } -//SEG409 slow_multiply -slow_multiply: { +//SEG409 muls8u +muls8u: { .label return = 8 .label m = 8 .label a = 2 - //SEG410 [195] if((byte) slow_multiply::a#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto slow_multiply::@1 [ slow_multiply::a#0 slow_multiply::b#0 ] ( main:2::multiply_results_compare:13::slow_multiply:152 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::a#0 slow_multiply::b#0 ] ) -- vbuz1_eq_0_then_la1 + //SEG410 [195] if((byte) muls8u::a#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls8u::@1 [ muls8u::a#0 muls8u::b#0 ] ( main:2::multiply_results_compare:13::muls8u:152 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 muls8u::a#0 muls8u::b#0 ] ) -- vbuz1_eq_0_then_la1 lda a beq b3 - //SEG411 [196] phi from slow_multiply to slow_multiply::@2 [phi:slow_multiply->slow_multiply::@2] - //SEG412 [196] phi (byte) slow_multiply::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:slow_multiply->slow_multiply::@2#0] -- vbuyy=vbuc1 + //SEG411 [196] phi from muls8u to muls8u::@2 [phi:muls8u->muls8u::@2] + //SEG412 [196] phi (byte) muls8u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8u->muls8u::@2#0] -- vbuyy=vbuc1 ldy #0 - //SEG413 [196] phi (word) slow_multiply::m#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:slow_multiply->slow_multiply::@2#1] -- vwuz1=vbuc1 + //SEG413 [196] phi (word) muls8u::m#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8u->muls8u::@2#1] -- vwuz1=vbuc1 tya sta m sta m+1 - //SEG414 [196] phi from slow_multiply::@2 to slow_multiply::@2 [phi:slow_multiply::@2->slow_multiply::@2] - //SEG415 [196] phi (byte) slow_multiply::i#2 = (byte) slow_multiply::i#1 [phi:slow_multiply::@2->slow_multiply::@2#0] -- register_copy - //SEG416 [196] phi (word) slow_multiply::m#3 = (word) slow_multiply::m#1 [phi:slow_multiply::@2->slow_multiply::@2#1] -- register_copy - //SEG417 slow_multiply::@2 + //SEG414 [196] phi from muls8u::@2 to muls8u::@2 [phi:muls8u::@2->muls8u::@2] + //SEG415 [196] phi (byte) muls8u::i#2 = (byte) muls8u::i#1 [phi:muls8u::@2->muls8u::@2#0] -- register_copy + //SEG416 [196] phi (word) muls8u::m#3 = (word) muls8u::m#1 [phi:muls8u::@2->muls8u::@2#1] -- register_copy + //SEG417 muls8u::@2 b2: - //SEG418 [197] (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:152 [ line_cursor#10 char_cursor#30 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 + //SEG418 [197] (word) muls8u::m#1 ← (word) muls8u::m#3 + (byte) muls8u::b#0 [ muls8u::a#0 muls8u::b#0 muls8u::i#2 muls8u::m#1 ] ( main:2::multiply_results_compare:13::muls8u:152 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 muls8u::a#0 muls8u::b#0 muls8u::i#2 muls8u::m#1 ] ) -- vwuz1=vwuz1_plus_vbuxx txa clc adc m @@ -11702,24 +11698,24 @@ slow_multiply: { lda #0 adc m+1 sta m+1 - //SEG419 [198] (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:152 [ line_cursor#10 char_cursor#30 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 + //SEG419 [198] (byte) muls8u::i#1 ← ++ (byte) muls8u::i#2 [ muls8u::a#0 muls8u::b#0 muls8u::m#1 muls8u::i#1 ] ( main:2::multiply_results_compare:13::muls8u:152 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 muls8u::a#0 muls8u::b#0 muls8u::m#1 muls8u::i#1 ] ) -- vbuyy=_inc_vbuyy iny - //SEG420 [199] 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:152 [ line_cursor#10 char_cursor#30 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 + //SEG420 [199] if((byte) muls8u::i#1!=(byte) muls8u::a#0) goto muls8u::@2 [ muls8u::a#0 muls8u::b#0 muls8u::m#1 muls8u::i#1 ] ( main:2::multiply_results_compare:13::muls8u:152 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 muls8u::a#0 muls8u::b#0 muls8u::m#1 muls8u::i#1 ] ) -- vbuyy_neq_vbuz1_then_la1 cpy a bne b2 - //SEG421 [200] phi from slow_multiply::@2 to slow_multiply::@1 [phi:slow_multiply::@2->slow_multiply::@1] - //SEG422 [200] phi (word) slow_multiply::return#0 = (word) slow_multiply::m#1 [phi:slow_multiply::@2->slow_multiply::@1#0] -- register_copy + //SEG421 [200] phi from muls8u::@2 to muls8u::@1 [phi:muls8u::@2->muls8u::@1] + //SEG422 [200] phi (word) muls8u::return#0 = (word) muls8u::m#1 [phi:muls8u::@2->muls8u::@1#0] -- register_copy jmp b1 - //SEG423 [200] phi from slow_multiply to slow_multiply::@1 [phi:slow_multiply->slow_multiply::@1] + //SEG423 [200] phi from muls8u to muls8u::@1 [phi:muls8u->muls8u::@1] b3: - //SEG424 [200] phi (word) slow_multiply::return#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:slow_multiply->slow_multiply::@1#0] -- vwuz1=vbuc1 + //SEG424 [200] phi (word) muls8u::return#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8u->muls8u::@1#0] -- vwuz1=vbuc1 lda #0 sta return sta return+1 - //SEG425 slow_multiply::@1 + //SEG425 muls8u::@1 b1: - //SEG426 slow_multiply::@return - //SEG427 [201] return [ slow_multiply::return#0 ] ( main:2::multiply_results_compare:13::slow_multiply:152 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::return#0 ] ) + //SEG426 muls8u::@return + //SEG427 [201] return [ muls8u::return#0 ] ( main:2::multiply_results_compare:13::muls8u:152 [ line_cursor#10 char_cursor#30 multiply_results_compare::a#6 multiply_results_compare::b#2 muls8u::return#0 ] ) rts } //SEG428 multiply_tables_compare @@ -11727,15 +11723,15 @@ multiply_tables_compare: { .label asm_sqr = 8 .label kc_sqr = 4 //SEG429 [203] phi from multiply_tables_compare to multiply_tables_compare::@1 [phi:multiply_tables_compare->multiply_tables_compare::@1] - //SEG430 [203] 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 #multiply_tables_compare::@1#0] -- pbuz1=pbuc1 + lda #asm_mul_sqr1_lo + lda #>mula_sqr1_lo sta asm_sqr+1 - //SEG431 [203] 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 #multiply_tables_compare::@1#1] -- pbuz1=pbuc1 + lda #mul_sqr1_lo + lda #>mulf_sqr1_lo sta kc_sqr+1 //SEG432 [203] phi from multiply_tables_compare::@2 to multiply_tables_compare::@1 [phi:multiply_tables_compare::@2->multiply_tables_compare::@1] //SEG433 [203] 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 @@ -11817,13 +11813,13 @@ multiply_tables_compare: { bne !+ inc kc_sqr+1 !: - //SEG469 [217] if((byte*) multiply_tables_compare::kc_sqr#1<(const byte[512]) mul_sqr1_lo#0+(word/signed word/dword/signed dword) 512*(byte/signed byte/word/signed word/dword/signed dword) 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 + //SEG469 [217] if((byte*) multiply_tables_compare::kc_sqr#1<(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512*(byte/signed byte/word/signed word/dword/signed dword) 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 + cmp #>mulf_sqr1_lo+$200*4 bcc b1 bne !+ lda kc_sqr - cmp #multiply_tables_compare::@5] @@ -11865,10 +11861,10 @@ multiply_tables_compare: { str1: .text " / @" str2: .text "multiply tables match!@" } -//SEG486 init_multiply_asm -init_multiply_asm: { +//SEG486 mulf_init_asm +mulf_init_asm: { .label mem = $ff - //SEG487 asm { ldx#$00 txa .byte$c9 lb1: tya adc#$00 ml1: staasm_mul_sqr1_hi,x tay cmp#$40 txa ror ml9: adc#$00 staml9+1 inx ml0: staasm_mul_sqr1_lo,x bnelb1 incml0+2 incml1+2 clc iny bnelb1 ldx#$00 ldy#$ff !: ldaasm_mul_sqr1_hi+1,x staasm_mul_sqr2_hi+$100,x ldaasm_mul_sqr1_hi,x staasm_mul_sqr2_hi,y ldaasm_mul_sqr1_lo+1,x staasm_mul_sqr2_lo+$100,x ldaasm_mul_sqr1_lo,x staasm_mul_sqr2_lo,y dey inx bne!- } + //SEG487 asm { ldx#$00 txa .byte$c9 lb1: tya adc#$00 ml1: stamula_sqr1_hi,x tay cmp#$40 txa ror ml9: adc#$00 staml9+1 inx ml0: stamula_sqr1_lo,x bnelb1 incml0+2 incml1+2 clc iny bnelb1 ldx#$00 ldy#$ff !: ldamula_sqr1_hi+1,x stamula_sqr2_hi+$100,x ldamula_sqr1_hi,x stamula_sqr2_hi,y ldamula_sqr1_lo+1,x stamula_sqr2_lo+$100,x ldamula_sqr1_lo,x stamula_sqr2_lo,y dey inx bne!- } ldx #0 txa .byte $c9 @@ -11876,7 +11872,7 @@ init_multiply_asm: { tya adc #0 ml1: - sta asm_mul_sqr1_hi,x + sta mula_sqr1_hi,x tay cmp #$40 txa @@ -11886,7 +11882,7 @@ init_multiply_asm: { sta ml9+1 inx ml0: - sta asm_mul_sqr1_lo,x + sta mula_sqr1_lo,x bne lb1 inc ml0+2 inc ml1+2 @@ -11896,35 +11892,35 @@ init_multiply_asm: { ldx #0 ldy #$ff !: - lda asm_mul_sqr1_hi+1,x - sta asm_mul_sqr2_hi+$100,x - lda asm_mul_sqr1_hi,x - sta asm_mul_sqr2_hi,y - lda asm_mul_sqr1_lo+1,x - sta asm_mul_sqr2_lo+$100,x - lda asm_mul_sqr1_lo,x - sta asm_mul_sqr2_lo,y + lda mula_sqr1_hi+1,x + sta mula_sqr2_hi+$100,x + lda mula_sqr1_hi,x + sta mula_sqr2_hi,y + lda mula_sqr1_lo+1,x + sta mula_sqr2_lo+$100,x + lda mula_sqr1_lo,x + sta mula_sqr2_lo,y dey inx bne !- - //SEG488 [224] *((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 + //SEG488 [224] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr1_lo#0) [ ] ( main:2::mulf_init_asm:9 [ ] ) -- _deref_pbuc1=_deref_pbuc2 + lda mula_sqr1_lo sta mem - //SEG489 [225] *((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 + //SEG489 [225] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr1_hi#0) [ ] ( main:2::mulf_init_asm:9 [ ] ) -- _deref_pbuc1=_deref_pbuc2 + lda mula_sqr1_hi sta mem - //SEG490 [226] *((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 + //SEG490 [226] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr2_lo#0) [ ] ( main:2::mulf_init_asm:9 [ ] ) -- _deref_pbuc1=_deref_pbuc2 + lda mula_sqr2_lo sta mem - //SEG491 [227] *((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 + //SEG491 [227] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr2_hi#0) [ ] ( main:2::mulf_init_asm:9 [ ] ) -- _deref_pbuc1=_deref_pbuc2 + lda mula_sqr2_hi sta mem - //SEG492 init_multiply_asm::@return - //SEG493 [228] return [ ] ( main:2::init_multiply_asm:9 [ ] ) + //SEG492 mulf_init_asm::@return + //SEG493 [228] return [ ] ( main:2::mulf_init_asm:9 [ ] ) rts } -//SEG494 init_multiply -init_multiply: { +//SEG494 mulf_init +mulf_init: { .label sqr1_hi = 6 .label sqr = 8 .label sqr1_lo = 4 @@ -11932,70 +11928,70 @@ init_multiply: { .label sqr2_hi = 6 .label sqr2_lo = 4 .label dir = 2 - //SEG495 [230] phi from init_multiply to init_multiply::@1 [phi:init_multiply->init_multiply::@1] - //SEG496 [230] phi (byte) init_multiply::x_2#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init_multiply->init_multiply::@1#0] -- vbuz1=vbuc1 + //SEG495 [230] phi from mulf_init to mulf_init::@1 [phi:mulf_init->mulf_init::@1] + //SEG496 [230] phi (byte) mulf_init::x_2#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#0] -- vbuz1=vbuc1 lda #0 sta x_2 - //SEG497 [230] phi (byte*) init_multiply::sqr1_hi#2 = (const byte[512]) mul_sqr1_hi#0+(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:init_multiply->init_multiply::@1#1] -- pbuz1=pbuc1 - lda #mulf_init::@1#1] -- pbuz1=pbuc1 + lda #mul_sqr1_hi+1 + lda #>mulf_sqr1_hi+1 sta sqr1_hi+1 - //SEG498 [230] phi (byte*) init_multiply::sqr1_lo#2 = (const byte[512]) mul_sqr1_lo#0+(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:init_multiply->init_multiply::@1#2] -- pbuz1=pbuc1 - lda #mulf_init::@1#2] -- pbuz1=pbuc1 + lda #mul_sqr1_lo+1 + lda #>mulf_sqr1_lo+1 sta sqr1_lo+1 - //SEG499 [230] phi (word) init_multiply::sqr#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init_multiply->init_multiply::@1#3] -- vwuz1=vbuc1 + //SEG499 [230] phi (word) mulf_init::sqr#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#3] -- vwuz1=vbuc1 lda #0 sta sqr sta sqr+1 - //SEG500 [230] phi (byte) init_multiply::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init_multiply->init_multiply::@1#4] -- vbuxx=vbuc1 + //SEG500 [230] phi (byte) mulf_init::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#4] -- vbuxx=vbuc1 tax - //SEG501 [230] phi from init_multiply::@2 to init_multiply::@1 [phi:init_multiply::@2->init_multiply::@1] - //SEG502 [230] phi (byte) init_multiply::x_2#3 = (byte) init_multiply::x_2#2 [phi:init_multiply::@2->init_multiply::@1#0] -- register_copy - //SEG503 [230] phi (byte*) init_multiply::sqr1_hi#2 = (byte*) init_multiply::sqr1_hi#1 [phi:init_multiply::@2->init_multiply::@1#1] -- register_copy - //SEG504 [230] phi (byte*) init_multiply::sqr1_lo#2 = (byte*) init_multiply::sqr1_lo#1 [phi:init_multiply::@2->init_multiply::@1#2] -- register_copy - //SEG505 [230] phi (word) init_multiply::sqr#4 = (word) init_multiply::sqr#1 [phi:init_multiply::@2->init_multiply::@1#3] -- register_copy - //SEG506 [230] phi (byte) init_multiply::c#2 = (byte) init_multiply::c#1 [phi:init_multiply::@2->init_multiply::@1#4] -- register_copy - //SEG507 init_multiply::@1 + //SEG501 [230] phi from mulf_init::@2 to mulf_init::@1 [phi:mulf_init::@2->mulf_init::@1] + //SEG502 [230] phi (byte) mulf_init::x_2#3 = (byte) mulf_init::x_2#2 [phi:mulf_init::@2->mulf_init::@1#0] -- register_copy + //SEG503 [230] phi (byte*) mulf_init::sqr1_hi#2 = (byte*) mulf_init::sqr1_hi#1 [phi:mulf_init::@2->mulf_init::@1#1] -- register_copy + //SEG504 [230] phi (byte*) mulf_init::sqr1_lo#2 = (byte*) mulf_init::sqr1_lo#1 [phi:mulf_init::@2->mulf_init::@1#2] -- register_copy + //SEG505 [230] phi (word) mulf_init::sqr#4 = (word) mulf_init::sqr#1 [phi:mulf_init::@2->mulf_init::@1#3] -- register_copy + //SEG506 [230] phi (byte) mulf_init::c#2 = (byte) mulf_init::c#1 [phi:mulf_init::@2->mulf_init::@1#4] -- register_copy + //SEG507 mulf_init::@1 b1: - //SEG508 [231] (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 + //SEG508 [231] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 [ mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 ] ( main:2::mulf_init:7 [ mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 ] ) -- vbuxx=_inc_vbuxx inx - //SEG509 [232] (byte~) init_multiply::$2 ← (byte) init_multiply::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 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 + //SEG509 [232] (byte~) mulf_init::$2 ← (byte) mulf_init::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 1 [ mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$2 ] ( main:2::mulf_init:7 [ mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$2 ] ) -- vbuaa=vbuxx_band_vbuc1 txa and #1 - //SEG510 [233] if((byte~) init_multiply::$2!=(byte/signed byte/word/signed word/dword/signed dword) 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 + //SEG510 [233] if((byte~) mulf_init::$2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@2 [ mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 ] ( main:2::mulf_init:7 [ mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 ] ) -- vbuaa_neq_0_then_la1 cmp #0 bne b2 - //SEG511 init_multiply::@5 - //SEG512 [234] (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 + //SEG511 mulf_init::@5 + //SEG512 [234] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 [ mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#1 ] ( main:2::mulf_init:7 [ mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#1 ] ) -- vbuz1=_inc_vbuz1 inc x_2 - //SEG513 [235] (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 + //SEG513 [235] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#1 mulf_init::sqr#2 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#1 mulf_init::sqr#2 ] ) -- vwuz1=_inc_vwuz1 inc sqr bne !+ inc sqr+1 !: - //SEG514 [236] phi from init_multiply::@1 init_multiply::@5 to init_multiply::@2 [phi:init_multiply::@1/init_multiply::@5->init_multiply::@2] - //SEG515 [236] 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 - //SEG516 [236] phi (word) init_multiply::sqr#3 = (word) init_multiply::sqr#4 [phi:init_multiply::@1/init_multiply::@5->init_multiply::@2#1] -- register_copy - //SEG517 init_multiply::@2 + //SEG514 [236] phi from mulf_init::@1 mulf_init::@5 to mulf_init::@2 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2] + //SEG515 [236] phi (byte) mulf_init::x_2#2 = (byte) mulf_init::x_2#3 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2#0] -- register_copy + //SEG516 [236] phi (word) mulf_init::sqr#3 = (word) mulf_init::sqr#4 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2#1] -- register_copy + //SEG517 mulf_init::@2 b2: - //SEG518 [237] (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 + //SEG518 [237] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$5 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$5 ] ) -- vbuaa=_lo_vwuz1 lda sqr - //SEG519 [238] *((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 + //SEG519 [238] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ) -- _deref_pbuz1=vbuaa ldy #0 sta (sqr1_lo),y - //SEG520 [239] (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 + //SEG520 [239] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$6 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$6 ] ) -- vbuaa=_hi_vwuz1 lda sqr+1 - //SEG521 [240] *((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 + //SEG521 [240] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ) -- _deref_pbuz1=vbuaa sta (sqr1_hi),y - //SEG522 [241] (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 + //SEG522 [241] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ) -- pbuz1=_inc_pbuz1 inc sqr1_hi bne !+ inc sqr1_hi+1 !: - //SEG523 [242] (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 + //SEG523 [242] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ) -- vwuz1=vwuz1_plus_vbuz2 lda x_2 clc adc sqr @@ -12003,93 +11999,93 @@ init_multiply: { lda #0 adc sqr+1 sta sqr+1 - //SEG524 [243] (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 + //SEG524 [243] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 [ mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_lo#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ( main:2::mulf_init:7 [ mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_lo#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ) -- pbuz1=_inc_pbuz1 inc sqr1_lo bne !+ inc sqr1_lo+1 !: - //SEG525 [244] if((byte*) init_multiply::sqr1_lo#1!=(const byte[512]) mul_sqr1_lo#0+(word/signed word/dword/signed dword) 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 + //SEG525 [244] if((byte*) mulf_init::sqr1_lo#1!=(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512) goto mulf_init::@1 [ mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_lo#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ( main:2::mulf_init:7 [ mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_lo#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ) -- pbuz1_neq_pbuc1_then_la1 lda sqr1_lo+1 - cmp #>mul_sqr1_lo+$200 + cmp #>mulf_sqr1_lo+$200 bne b1 lda sqr1_lo - cmp #init_multiply::@3] - //SEG527 [245] phi (byte) init_multiply::dir#2 = (byte/word/signed word/dword/signed dword) 255 [phi:init_multiply::@2->init_multiply::@3#0] -- vbuz1=vbuc1 + //SEG526 [245] phi from mulf_init::@2 to mulf_init::@3 [phi:mulf_init::@2->mulf_init::@3] + //SEG527 [245] phi (byte) mulf_init::dir#2 = (byte/word/signed word/dword/signed dword) 255 [phi:mulf_init::@2->mulf_init::@3#0] -- vbuz1=vbuc1 lda #$ff sta dir - //SEG528 [245] 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 #mulf_init::@3#1] -- pbuz1=pbuc1 + lda #mul_sqr2_hi + lda #>mulf_sqr2_hi sta sqr2_hi+1 - //SEG529 [245] 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 #mulf_init::@3#2] -- pbuz1=pbuc1 + lda #mul_sqr2_lo + lda #>mulf_sqr2_lo sta sqr2_lo+1 - //SEG530 [245] phi (byte) init_multiply::x_255#2 = ((byte))-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:init_multiply::@2->init_multiply::@3#3] -- vbuxx=vbuc1 + //SEG530 [245] phi (byte) mulf_init::x_255#2 = ((byte))-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init::@2->mulf_init::@3#3] -- vbuxx=vbuc1 ldx #-1 - //SEG531 [245] phi from init_multiply::@4 to init_multiply::@3 [phi:init_multiply::@4->init_multiply::@3] - //SEG532 [245] phi (byte) init_multiply::dir#2 = (byte) init_multiply::dir#3 [phi:init_multiply::@4->init_multiply::@3#0] -- register_copy - //SEG533 [245] phi (byte*) init_multiply::sqr2_hi#2 = (byte*) init_multiply::sqr2_hi#1 [phi:init_multiply::@4->init_multiply::@3#1] -- register_copy - //SEG534 [245] phi (byte*) init_multiply::sqr2_lo#2 = (byte*) init_multiply::sqr2_lo#1 [phi:init_multiply::@4->init_multiply::@3#2] -- register_copy - //SEG535 [245] phi (byte) init_multiply::x_255#2 = (byte) init_multiply::x_255#1 [phi:init_multiply::@4->init_multiply::@3#3] -- register_copy - //SEG536 init_multiply::@3 + //SEG531 [245] phi from mulf_init::@4 to mulf_init::@3 [phi:mulf_init::@4->mulf_init::@3] + //SEG532 [245] phi (byte) mulf_init::dir#2 = (byte) mulf_init::dir#3 [phi:mulf_init::@4->mulf_init::@3#0] -- register_copy + //SEG533 [245] phi (byte*) mulf_init::sqr2_hi#2 = (byte*) mulf_init::sqr2_hi#1 [phi:mulf_init::@4->mulf_init::@3#1] -- register_copy + //SEG534 [245] phi (byte*) mulf_init::sqr2_lo#2 = (byte*) mulf_init::sqr2_lo#1 [phi:mulf_init::@4->mulf_init::@3#2] -- register_copy + //SEG535 [245] phi (byte) mulf_init::x_255#2 = (byte) mulf_init::x_255#1 [phi:mulf_init::@4->mulf_init::@3#3] -- register_copy + //SEG536 mulf_init::@3 b3: - //SEG537 [246] *((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 + //SEG537 [246] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[512]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) -- _deref_pbuz1=pbuc1_derefidx_vbuxx + lda mulf_sqr1_lo,x ldy #0 sta (sqr2_lo),y - //SEG538 [247] *((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 + //SEG538 [247] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[512]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) -- _deref_pbuz1=pbuc1_derefidx_vbuxx + lda mulf_sqr1_hi,x sta (sqr2_hi),y - //SEG539 [248] (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 + //SEG539 [248] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::sqr2_hi#1 ] ( main:2::mulf_init:7 [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::sqr2_hi#1 ] ) -- pbuz1=_inc_pbuz1 inc sqr2_hi bne !+ inc sqr2_hi+1 !: - //SEG540 [249] (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 + //SEG540 [249] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ( main:2::mulf_init:7 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ) -- vbuxx=vbuxx_plus_vbuz1 txa clc adc dir tax - //SEG541 [250] if((byte) init_multiply::x_255#1!=(byte/signed byte/word/signed word/dword/signed dword) 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 + //SEG541 [250] if((byte) mulf_init::x_255#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@12 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ( main:2::mulf_init:7 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ) -- vbuxx_neq_0_then_la1 cpx #0 bne b4 - //SEG542 [251] phi from init_multiply::@3 to init_multiply::@4 [phi:init_multiply::@3->init_multiply::@4] - //SEG543 [251] phi (byte) init_multiply::dir#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:init_multiply::@3->init_multiply::@4#0] -- vbuz1=vbuc1 + //SEG542 [251] phi from mulf_init::@3 to mulf_init::@4 [phi:mulf_init::@3->mulf_init::@4] + //SEG543 [251] phi (byte) mulf_init::dir#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init::@3->mulf_init::@4#0] -- vbuz1=vbuc1 lda #1 sta dir - //SEG544 init_multiply::@4 + //SEG544 mulf_init::@4 b4: - //SEG545 [252] (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 + //SEG545 [252] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 [ mulf_init::x_255#1 mulf_init::sqr2_lo#1 mulf_init::sqr2_hi#1 mulf_init::dir#3 ] ( main:2::mulf_init:7 [ mulf_init::x_255#1 mulf_init::sqr2_lo#1 mulf_init::sqr2_hi#1 mulf_init::dir#3 ] ) -- pbuz1=_inc_pbuz1 inc sqr2_lo bne !+ inc sqr2_lo+1 !: - //SEG546 [253] if((byte*) init_multiply::sqr2_lo#1!=(const byte[512]) mul_sqr2_lo#0+(word/signed word/dword/signed dword) 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 + //SEG546 [253] if((byte*) mulf_init::sqr2_lo#1!=(const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) goto mulf_init::@3 [ mulf_init::x_255#1 mulf_init::sqr2_lo#1 mulf_init::sqr2_hi#1 mulf_init::dir#3 ] ( main:2::mulf_init:7 [ mulf_init::x_255#1 mulf_init::sqr2_lo#1 mulf_init::sqr2_hi#1 mulf_init::dir#3 ] ) -- pbuz1_neq_pbuc1_then_la1 lda sqr2_lo+1 - cmp #>mul_sqr2_lo+$1ff + cmp #>mulf_sqr2_lo+$1ff bne b3 lda sqr2_lo - cmp #init_multiply::@12] - //SEG553 init_multiply::@12 - //SEG554 [251] phi from init_multiply::@12 to init_multiply::@4 [phi:init_multiply::@12->init_multiply::@4] - //SEG555 [251] phi (byte) init_multiply::dir#3 = (byte) init_multiply::dir#2 [phi:init_multiply::@12->init_multiply::@4#0] -- register_copy + //SEG552 [257] phi from mulf_init::@3 to mulf_init::@12 [phi:mulf_init::@3->mulf_init::@12] + //SEG553 mulf_init::@12 + //SEG554 [251] phi from mulf_init::@12 to mulf_init::@4 [phi:mulf_init::@12->mulf_init::@4] + //SEG555 [251] phi (byte) mulf_init::dir#3 = (byte) mulf_init::dir#2 [phi:mulf_init::@12->mulf_init::@4#0] -- register_copy } //SEG556 print_cls print_cls: { @@ -12125,19 +12121,19 @@ print_cls: { rts } .align $100 - mul_sqr1_lo: .fill $200, 0 + mulf_sqr1_lo: .fill $200, 0 .align $100 - mul_sqr1_hi: .fill $200, 0 + mulf_sqr1_hi: .fill $200, 0 .align $100 - mul_sqr2_lo: .fill $200, 0 + mulf_sqr2_lo: .fill $200, 0 .align $100 - mul_sqr2_hi: .fill $200, 0 + mulf_sqr2_hi: .fill $200, 0 .align $100 - asm_mul_sqr1_lo: .fill $200, 0 + mula_sqr1_lo: .fill $200, 0 .align $100 - asm_mul_sqr1_hi: .fill $200, 0 + mula_sqr1_hi: .fill $200, 0 .align $100 - asm_mul_sqr2_lo: .fill $200, 0 + mula_sqr2_lo: .fill $200, 0 .align $100 - asm_mul_sqr2_hi: .fill $200, 0 + mula_sqr2_hi: .fill $200, 0 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 a937bf4b0..c5b7c59f6 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 @@ -5,14 +5,6 @@ (const byte*) BGCOL#0 BGCOL = ((byte*))(word/dword/signed dword) 53281 (byte*) SCREEN (const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024 -(byte[512]) asm_mul_sqr1_hi -(const byte[512]) asm_mul_sqr1_hi#0 asm_mul_sqr1_hi = { fill( 512, 0) } -(byte[512]) asm_mul_sqr1_lo -(const byte[512]) asm_mul_sqr1_lo#0 asm_mul_sqr1_lo = { fill( 512, 0) } -(byte[512]) asm_mul_sqr2_hi -(const byte[512]) asm_mul_sqr2_hi#0 asm_mul_sqr2_hi = { fill( 512, 0) } -(byte[512]) asm_mul_sqr2_lo -(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:10 11.0 (byte*) char_cursor#122 char_cursor zp ZP_WORD:10 1.6944444444444446 @@ -28,52 +20,6 @@ (byte*~) char_cursor#201 char_cursor zp ZP_WORD:10 4.0 (byte*) char_cursor#30 char_cursor zp ZP_WORD:10 0.27586206896551724 (byte*) char_cursor#78 char_cursor zp ZP_WORD:10 6.0 -(void()) init_multiply() -(byte~) init_multiply::$2 reg byte a 22.0 -(byte~) init_multiply::$5 reg byte a 22.0 -(byte~) init_multiply::$6 reg byte a 22.0 -(label) init_multiply::@1 -(label) init_multiply::@12 -(label) init_multiply::@2 -(label) init_multiply::@3 -(label) init_multiply::@4 -(label) init_multiply::@5 -(label) init_multiply::@8 -(label) init_multiply::@return -(byte) init_multiply::c -(byte) init_multiply::c#1 reg byte x 2.357142857142857 -(byte) init_multiply::c#2 reg byte x 22.0 -(byte) init_multiply::dir -(byte) init_multiply::dir#2 dir zp ZP_BYTE:2 4.714285714285714 -(byte) init_multiply::dir#3 dir zp ZP_BYTE:2 7.333333333333333 -(word) init_multiply::sqr -(word) init_multiply::sqr#1 sqr zp ZP_WORD:8 7.333333333333333 -(word) init_multiply::sqr#2 sqr zp ZP_WORD:8 22.0 -(word) init_multiply::sqr#3 sqr zp ZP_WORD:8 9.166666666666666 -(word) init_multiply::sqr#4 sqr zp ZP_WORD:8 6.6000000000000005 -(byte*) init_multiply::sqr1_hi -(byte*) init_multiply::sqr1_hi#1 sqr1_hi zp ZP_WORD:6 5.5 -(byte*) init_multiply::sqr1_hi#2 sqr1_hi zp ZP_WORD:6 3.0 -(byte*) init_multiply::sqr1_lo -(byte*) init_multiply::sqr1_lo#1 sqr1_lo zp ZP_WORD:4 16.5 -(byte*) init_multiply::sqr1_lo#2 sqr1_lo zp ZP_WORD:4 2.5384615384615383 -(byte*) init_multiply::sqr2_hi -(byte*) init_multiply::sqr2_hi#1 sqr2_hi zp ZP_WORD:6 3.142857142857143 -(byte*) init_multiply::sqr2_hi#2 sqr2_hi zp ZP_WORD:6 11.0 -(byte*) init_multiply::sqr2_lo -(byte*) init_multiply::sqr2_lo#1 sqr2_lo zp ZP_WORD:4 16.5 -(byte*) init_multiply::sqr2_lo#2 sqr2_lo zp ZP_WORD:4 4.125 -(byte) init_multiply::x_2 -(byte) init_multiply::x_2#1 x_2 zp ZP_BYTE:2 11.0 -(byte) init_multiply::x_2#2 x_2 zp ZP_BYTE:2 4.888888888888889 -(byte) init_multiply::x_2#3 x_2 zp ZP_BYTE:2 8.25 -(byte) init_multiply::x_255 -(byte) init_multiply::x_255#1 reg byte x 5.5 -(byte) init_multiply::x_255#2 reg byte x 11.0 -(void()) init_multiply_asm() -(label) init_multiply_asm::@return -(byte*) init_multiply_asm::mem -(const byte*) init_multiply_asm::mem#0 mem = ((byte*))(byte/word/signed word/dword/signed dword) 255 (byte*) line_cursor (byte*) line_cursor#1 line_cursor zp ZP_WORD:4 0.8181818181818181 (byte*) line_cursor#10 line_cursor zp ZP_WORD:4 0.1276595744680851 @@ -86,32 +32,150 @@ (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) } -(byte[512]) mul_sqr1_lo -(const byte[512]) mul_sqr1_lo#0 mul_sqr1_lo = { fill( 512, 0) } -(byte[512]) mul_sqr2_hi -(const byte[512]) mul_sqr2_hi#0 mul_sqr2_hi = { fill( 512, 0) } -(byte[512]) mul_sqr2_lo -(const byte[512]) mul_sqr2_lo#0 mul_sqr2_lo = { fill( 512, 0) } -(word()) multiply((byte) multiply::a , (byte) multiply::b) -(label) multiply::@return -(byte) multiply::a -(byte) multiply::a#1 reg byte a 101.0 -(byte) multiply::a#2 reg byte a 105.0 -(byte~) multiply::a#4 reg byte a 2.0 -(byte) multiply::b -(byte) multiply::b#1 reg byte x 202.0 -(byte) multiply::b#2 reg byte x 52.5 -(byte~) multiply::b#4 reg byte x 4.0 -(byte*) multiply::memA -(const byte*) multiply::memA#0 memA = ((byte*))(byte/word/signed word/dword/signed dword) 254 -(byte*) multiply::memB -(const byte*) multiply::memB#0 memB = ((byte*))(byte/word/signed word/dword/signed dword) 255 -(word) multiply::return -(word) multiply::return#0 return zp ZP_WORD:12 26.25 -(word) multiply::return#2 return zp ZP_WORD:12 4.0 -(word) multiply::return#3 return zp ZP_WORD:12 202.0 +(byte[512]) mula_sqr1_hi +(const byte[512]) mula_sqr1_hi#0 mula_sqr1_hi = { fill( 512, 0) } +(byte[512]) mula_sqr1_lo +(const byte[512]) mula_sqr1_lo#0 mula_sqr1_lo = { fill( 512, 0) } +(byte[512]) mula_sqr2_hi +(const byte[512]) mula_sqr2_hi#0 mula_sqr2_hi = { fill( 512, 0) } +(byte[512]) mula_sqr2_lo +(const byte[512]) mula_sqr2_lo#0 mula_sqr2_lo = { fill( 512, 0) } +(signed word()) mulf8s((signed byte) mulf8s::a , (signed byte) mulf8s::b) +(byte~) mulf8s::$12 reg byte a 4.0 +(byte/signed byte/word/signed word/dword/signed dword~) mulf8s::$16 reg byte a 4.0 +(byte/signed byte/word/signed word/dword/signed dword~) mulf8s::$17 reg byte a 4.0 +(byte~) mulf8s::$6 reg byte a 4.0 +(label) mulf8s::@1 +(label) mulf8s::@2 +(label) mulf8s::@3 +(label) mulf8s::@4 +(label) mulf8s::@6 +(label) mulf8s::@return +(signed byte) mulf8s::a +(signed byte) mulf8s::a#0 reg byte y 7.357142857142858 +(signed byte) mulf8s::b +(signed byte) mulf8s::b#0 b zp ZP_BYTE:3 9.363636363636363 +(word) mulf8s::m +(word) mulf8s::m#0 m zp ZP_WORD:12 2.0 +(word) mulf8s::m#1 m zp ZP_WORD:12 4.0 +(word) mulf8s::m#2 m zp ZP_WORD:12 4.0 +(word) mulf8s::m#4 m zp ZP_WORD:12 1.3333333333333333 +(word) mulf8s::m#5 m zp ZP_WORD:12 2.5 +(signed word) mulf8s::return +(signed word) mulf8s::return#2 return zp ZP_WORD:12 202.0 +(word()) mulf8u((byte) mulf8u::a , (byte) mulf8u::b) +(label) mulf8u::@return +(byte) mulf8u::a +(byte) mulf8u::a#1 reg byte a 101.0 +(byte) mulf8u::a#2 reg byte a 105.0 +(byte~) mulf8u::a#3 reg byte a 2.0 +(byte) mulf8u::b +(byte) mulf8u::b#1 reg byte x 202.0 +(byte) mulf8u::b#2 reg byte x 52.5 +(byte~) mulf8u::b#3 reg byte x 4.0 +(byte*) mulf8u::memA +(const byte*) mulf8u::memA#0 memA = ((byte*))(byte/word/signed word/dword/signed dword) 254 +(byte*) mulf8u::memB +(const byte*) mulf8u::memB#0 memB = ((byte*))(byte/word/signed word/dword/signed dword) 255 +(word) mulf8u::return +(word) mulf8u::return#0 return zp ZP_WORD:12 26.25 +(word) mulf8u::return#2 return zp ZP_WORD:12 4.0 +(word) mulf8u::return#3 return zp ZP_WORD:12 202.0 +(void()) mulf_init() +(byte~) mulf_init::$2 reg byte a 22.0 +(byte~) mulf_init::$5 reg byte a 22.0 +(byte~) mulf_init::$6 reg byte a 22.0 +(label) mulf_init::@1 +(label) mulf_init::@12 +(label) mulf_init::@2 +(label) mulf_init::@3 +(label) mulf_init::@4 +(label) mulf_init::@5 +(label) mulf_init::@8 +(label) mulf_init::@return +(byte) mulf_init::c +(byte) mulf_init::c#1 reg byte x 2.357142857142857 +(byte) mulf_init::c#2 reg byte x 22.0 +(byte) mulf_init::dir +(byte) mulf_init::dir#2 dir zp ZP_BYTE:2 4.714285714285714 +(byte) mulf_init::dir#3 dir zp ZP_BYTE:2 7.333333333333333 +(word) mulf_init::sqr +(word) mulf_init::sqr#1 sqr zp ZP_WORD:8 7.333333333333333 +(word) mulf_init::sqr#2 sqr zp ZP_WORD:8 22.0 +(word) mulf_init::sqr#3 sqr zp ZP_WORD:8 9.166666666666666 +(word) mulf_init::sqr#4 sqr zp ZP_WORD:8 6.6000000000000005 +(byte*) mulf_init::sqr1_hi +(byte*) mulf_init::sqr1_hi#1 sqr1_hi zp ZP_WORD:6 5.5 +(byte*) mulf_init::sqr1_hi#2 sqr1_hi zp ZP_WORD:6 3.0 +(byte*) mulf_init::sqr1_lo +(byte*) mulf_init::sqr1_lo#1 sqr1_lo zp ZP_WORD:4 16.5 +(byte*) mulf_init::sqr1_lo#2 sqr1_lo zp ZP_WORD:4 2.5384615384615383 +(byte*) mulf_init::sqr2_hi +(byte*) mulf_init::sqr2_hi#1 sqr2_hi zp ZP_WORD:6 3.142857142857143 +(byte*) mulf_init::sqr2_hi#2 sqr2_hi zp ZP_WORD:6 11.0 +(byte*) mulf_init::sqr2_lo +(byte*) mulf_init::sqr2_lo#1 sqr2_lo zp ZP_WORD:4 16.5 +(byte*) mulf_init::sqr2_lo#2 sqr2_lo zp ZP_WORD:4 4.125 +(byte) mulf_init::x_2 +(byte) mulf_init::x_2#1 x_2 zp ZP_BYTE:2 11.0 +(byte) mulf_init::x_2#2 x_2 zp ZP_BYTE:2 4.888888888888889 +(byte) mulf_init::x_2#3 x_2 zp ZP_BYTE:2 8.25 +(byte) mulf_init::x_255 +(byte) mulf_init::x_255#1 reg byte x 5.5 +(byte) mulf_init::x_255#2 reg byte x 11.0 +(void()) mulf_init_asm() +(label) mulf_init_asm::@return +(byte*) mulf_init_asm::mem +(const byte*) mulf_init_asm::mem#0 mem = ((byte*))(byte/word/signed word/dword/signed dword) 255 +(byte[512]) mulf_sqr1_hi +(const byte[512]) mulf_sqr1_hi#0 mulf_sqr1_hi = { fill( 512, 0) } +(byte[512]) mulf_sqr1_lo +(const byte[512]) mulf_sqr1_lo#0 mulf_sqr1_lo = { fill( 512, 0) } +(byte[512]) mulf_sqr2_hi +(const byte[512]) mulf_sqr2_hi#0 mulf_sqr2_hi = { fill( 512, 0) } +(byte[512]) mulf_sqr2_lo +(const byte[512]) mulf_sqr2_lo#0 mulf_sqr2_lo = { fill( 512, 0) } +(signed word()) muls8s((signed byte) muls8s::a , (signed byte) muls8s::b) +(label) muls8s::@1 +(label) muls8s::@2 +(label) muls8s::@3 +(label) muls8s::@5 +(label) muls8s::@return +(signed byte) muls8s::a +(signed byte) muls8s::a#0 a zp ZP_BYTE:2 175.58333333333334 +(signed byte) muls8s::b +(signed byte) muls8s::b#0 reg byte x 191.1818181818182 +(signed byte) muls8s::i +(signed byte) muls8s::i#1 reg byte y 1501.5 +(signed byte) muls8s::i#2 reg byte y 1001.0 +(signed byte) muls8s::j +(signed byte) muls8s::j#1 reg byte y 1501.5 +(signed byte) muls8s::j#2 reg byte y 1001.0 +(signed word) muls8s::m +(signed word) muls8s::m#1 m zp ZP_WORD:8 1001.0 +(signed word) muls8s::m#2 m zp ZP_WORD:8 1001.0 +(signed word) muls8s::m#3 m zp ZP_WORD:8 2002.0 +(signed word) muls8s::m#5 m zp ZP_WORD:8 2002.0 +(signed word) muls8s::return +(signed word) muls8s::return#0 return zp ZP_WORD:8 701.0 +(signed word) muls8s::return#2 return zp ZP_WORD:8 202.0 +(word()) muls8u((byte) muls8u::a , (byte) muls8u::b) +(label) muls8u::@1 +(label) muls8u::@2 +(label) muls8u::@return +(byte) muls8u::a +(byte) muls8u::a#0 a zp ZP_BYTE:2 157.71428571428572 +(byte) muls8u::b +(byte) muls8u::b#0 reg byte x 183.66666666666669 +(byte) muls8u::i +(byte) muls8u::i#1 reg byte y 1501.5 +(byte) muls8u::i#2 reg byte y 1001.0 +(word) muls8u::m +(word) muls8u::m#1 m zp ZP_WORD:8 1001.0 +(word) muls8u::m#3 m zp ZP_WORD:8 2002.0 +(word) muls8u::return +(word) muls8u::return#0 return zp ZP_WORD:8 367.33333333333337 +(word) muls8u::return#2 return zp ZP_WORD:8 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 @@ -244,29 +308,6 @@ (word) print_word::w#4 w zp ZP_WORD:8 4.0 (word) print_word::w#5 w zp ZP_WORD:8 4.666666666666666 (word~) print_word::w#9 w zp ZP_WORD:8 4.0 -(signed word()) signed_multiply((signed byte) signed_multiply::a , (signed byte) signed_multiply::b) -(byte~) signed_multiply::$12 reg byte a 4.0 -(byte/signed byte/word/signed word/dword/signed dword~) signed_multiply::$16 reg byte a 4.0 -(byte/signed byte/word/signed word/dword/signed dword~) signed_multiply::$17 reg byte a 4.0 -(byte~) signed_multiply::$6 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 reg byte y 7.357142857142858 -(signed byte) signed_multiply::b -(signed byte) signed_multiply::b#0 b zp ZP_BYTE:3 9.363636363636363 -(word) signed_multiply::m -(word) signed_multiply::m#0 m zp ZP_WORD:12 2.0 -(word) signed_multiply::m#1 m zp ZP_WORD:12 4.0 -(word) signed_multiply::m#2 m zp ZP_WORD:12 4.0 -(word) signed_multiply::m#4 m zp ZP_WORD:12 1.3333333333333333 -(word) signed_multiply::m#5 m zp ZP_WORD:12 2.5 -(signed word) signed_multiply::return -(signed word) signed_multiply::return#2 return zp ZP_WORD:12 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 @@ -311,76 +352,35 @@ (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 -(label) slow_multiply::@return -(byte) slow_multiply::a -(byte) slow_multiply::a#0 a zp ZP_BYTE:2 157.71428571428572 -(byte) slow_multiply::b -(byte) slow_multiply::b#0 reg byte x 183.66666666666669 -(byte) slow_multiply::i -(byte) slow_multiply::i#1 reg byte y 1501.5 -(byte) slow_multiply::i#2 reg byte y 1001.0 -(word) slow_multiply::m -(word) slow_multiply::m#1 m zp ZP_WORD:8 1001.0 -(word) slow_multiply::m#3 m zp ZP_WORD:8 2002.0 -(word) slow_multiply::return -(word) slow_multiply::return#0 return zp ZP_WORD:8 367.33333333333337 -(word) slow_multiply::return#2 return zp ZP_WORD:8 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:8 1001.0 -(signed word) slow_signed_multiply::m#2 m zp ZP_WORD:8 1001.0 -(signed word) slow_signed_multiply::m#3 m zp ZP_WORD:8 2002.0 -(signed word) slow_signed_multiply::m#5 m zp ZP_WORD:8 2002.0 -(signed word) slow_signed_multiply::return -(signed word) slow_signed_multiply::return#0 return zp ZP_WORD:8 701.0 -(signed word) slow_signed_multiply::return#2 return zp ZP_WORD:8 202.0 -zp ZP_BYTE:2 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::a#1 slow_signed_multiply::a#0 multiply_results_compare::a#6 multiply_results_compare::a#1 slow_multiply::a#0 init_multiply::x_2#3 init_multiply::x_2#2 init_multiply::x_2#1 init_multiply::dir#2 init_multiply::dir#3 ] -zp ZP_BYTE:3 [ signed_multiply_results_compare::b#2 signed_multiply_results_compare::b#1 signed_multiply::b#0 signed_multiply_error::b#0 multiply_results_compare::b#2 multiply_results_compare::b#1 multiply_error::b#0 ] -zp ZP_WORD:4 [ line_cursor#23 line_cursor#45 line_cursor#10 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 init_multiply::sqr1_hi#2 init_multiply::sqr1_hi#1 init_multiply::sqr2_hi#2 init_multiply::sqr2_hi#1 ] -zp ZP_WORD:8 [ 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#9 print_word::w#10 print_word::w#11 multiply_tables_compare::asm_sqr#2 multiply_tables_compare::asm_sqr#1 signed_multiply_error::ms#0 signed_multiply_results_compare::ms#0 slow_signed_multiply::return#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 multiply_error::ms#0 multiply_results_compare::ms#0 slow_multiply::return#2 slow_multiply::return#0 slow_multiply::m#3 slow_multiply::m#1 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 muls8s::a#0 multiply_results_compare::a#6 multiply_results_compare::a#1 muls8u::a#0 mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 mulf_init::dir#2 mulf_init::dir#3 ] +zp ZP_BYTE:3 [ signed_multiply_results_compare::b#2 signed_multiply_results_compare::b#1 mulf8s::b#0 signed_multiply_error::b#0 multiply_results_compare::b#2 multiply_results_compare::b#1 multiply_error::b#0 ] +zp ZP_WORD:4 [ line_cursor#23 line_cursor#45 line_cursor#10 line_cursor#1 multiply_tables_compare::kc_sqr#2 multiply_tables_compare::kc_sqr#1 mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 mulf_init::sqr2_lo#2 mulf_init::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 mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] +zp ZP_WORD:8 [ 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#9 print_word::w#10 print_word::w#11 multiply_tables_compare::asm_sqr#2 multiply_tables_compare::asm_sqr#1 signed_multiply_error::ms#0 signed_multiply_results_compare::ms#0 muls8s::return#2 muls8s::m#5 muls8s::return#0 muls8s::m#3 muls8s::m#1 muls8s::m#2 multiply_error::ms#0 multiply_results_compare::ms#0 muls8u::return#2 muls8u::return#0 muls8u::m#3 muls8u::m#1 mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] reg byte x [ print_byte::b#5 print_byte::b#3 print_byte::b#4 print_byte::b#9 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:10 [ char_cursor#78 char_cursor#129 char_cursor#128 char_cursor#124 char_cursor#141 char_cursor#30 char_cursor#123 char_cursor#17 char_cursor#122 char_cursor#176 char_cursor#180 char_cursor#1 char_cursor#126 char_cursor#201 ] reg byte x [ print_sbyte::b#4 print_sbyte::b#3 print_sbyte::b#1 print_sbyte::b#2 print_sbyte::b#0 ] -zp ZP_WORD:12 [ signed_multiply::m#4 signed_multiply::m#5 signed_multiply::m#1 signed_multiply::m#0 signed_multiply::m#2 signed_multiply::return#2 signed_multiply_results_compare::ma#0 signed_multiply_error::ma#0 multiply::return#2 multiply::return#0 multiply::return#3 multiply_results_compare::ma#0 multiply_error::ma#0 ] -reg byte a [ multiply::a#2 multiply::a#1 multiply::a#4 ] -reg byte x [ multiply::b#2 multiply::b#1 multiply::b#4 ] -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 ] -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_signed_multiply::b#0 ] -reg byte y [ signed_multiply::a#0 ] +zp ZP_WORD:12 [ mulf8s::m#4 mulf8s::m#5 mulf8s::m#1 mulf8s::m#0 mulf8s::m#2 mulf8s::return#2 signed_multiply_results_compare::ma#0 signed_multiply_error::ma#0 mulf8u::return#2 mulf8u::return#0 mulf8u::return#3 multiply_results_compare::ma#0 multiply_error::ma#0 ] +reg byte a [ mulf8u::a#2 mulf8u::a#3 mulf8u::a#1 ] +reg byte x [ mulf8u::b#2 mulf8u::b#3 mulf8u::b#1 ] +reg byte y [ muls8s::i#2 muls8s::i#1 ] +reg byte y [ muls8s::j#2 muls8s::j#1 ] +reg byte y [ muls8u::i#2 muls8u::i#1 ] +reg byte x [ mulf_init::c#2 mulf_init::c#1 ] +reg byte x [ mulf_init::x_255#2 mulf_init::x_255#1 ] +reg byte x [ muls8s::b#0 ] +reg byte y [ mulf8s::a#0 ] reg byte x [ signed_multiply_error::a#0 ] reg byte a [ print_byte::$0 ] reg byte a [ print_byte::$2 ] -reg byte a [ signed_multiply::$6 ] -reg byte a [ signed_multiply::$16 ] -reg byte a [ signed_multiply::$12 ] -reg byte a [ signed_multiply::$17 ] -reg byte x [ slow_multiply::b#0 ] +reg byte a [ mulf8s::$6 ] +reg byte a [ mulf8s::$16 ] +reg byte a [ mulf8s::$12 ] +reg byte a [ mulf8s::$17 ] +reg byte x [ muls8u::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 ] +reg byte a [ mulf_init::$2 ] +reg byte a [ mulf_init::$5 ] +reg byte a [ mulf_init::$6 ]