diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/vbuaa_le_0_then_la1.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/vbuaa_le_0_then_la1.asm new file mode 100644 index 000000000..118295957 --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/fragment/asm/vbuaa_le_0_then_la1.asm @@ -0,0 +1,2 @@ +cmp #0 +beq {la1} \ No newline at end of file diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/vwuz1_eq_vwuz2_then_la1.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/vwuz1_eq_vwuz2_then_la1.asm new file mode 100644 index 000000000..a4d62bbe5 --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/fragment/asm/vwuz1_eq_vwuz2_then_la1.asm @@ -0,0 +1,7 @@ +lda {z1} +cmp {z2} +bne !+ +lda {z1}+1 +cmp {z2}+1 +beq {la1} +!: \ No newline at end of file diff --git a/src/test/java/dk/camelot64/kickc/test/multiply.kc b/src/test/java/dk/camelot64/kickc/test/multiply.kc index 0d25bba96..c608f88f9 100644 --- a/src/test/java/dk/camelot64/kickc/test/multiply.kc +++ b/src/test/java/dk/camelot64/kickc/test/multiply.kc @@ -7,9 +7,23 @@ import "print.kc" byte* BGCOL = $d021; void main() { + *BGCOL = 5; + print_cls(); init_mul_tables(); init_mul_tables_asm(); mul_tables_compare(); + mul_results_compare(); +} + +// Perform a slow multiplication by repeated addition +word slow_multiply(byte a, byte b) { + word m = 0; + if(a>0) { + for(byte i = 0; i!=a; i++) { + m = m + b; + } + } + return m; } // mul_sqr tables will contain f(x)=int(x*x/4) and g(x) = f(x-255). @@ -114,19 +128,45 @@ void init_mul_tables_asm() { *mem = *asm_mul_sqr1_hi; *mem = *asm_mul_sqr2_lo; *mem = *asm_mul_sqr2_hi; +} +// Fast multiply two bytes using ASM +word asm_multiply(byte a, byte b) { + const byte* memA = $fe; + const byte* memB = $ff; + *memA = a; + *memB = b; + asm { + lda memA + sta sm1+1 + sta sm3+1 + eor #$ff + sta sm2+1 + sta sm4+1 + ldx memB + sec + sm1: + lda asm_mul_sqr1_lo,x + sm2: + sbc asm_mul_sqr2_lo,x + sta memA + sm3: + lda asm_mul_sqr1_hi,x + sm4: + sbc asm_mul_sqr2_hi,x + sta memB + } + return { *memB, *memA }; } // Compare the ASM-based mul tables with the KC-based mul tables // Red screen on failure - green on success void mul_tables_compare() { - *BGCOL = 5; byte* asm_sqr = asm_mul_sqr1_lo; for( byte* kc_sqr=mul_sqr1_lo; kc_sqrasm_mul_sqr1_lo - sta asm_sqr+1 - lda #mul_sqr1_lo - sta kc_sqr+1 +mul_results_compare: { + .label ms = $a + .label ma = $c + .label b = 3 + .label a = 2 + lda #0 + sta a b1: - ldy #0 - lda (kc_sqr),y - cmp (asm_sqr),y - beq b2 + lda #0 + sta b + b2: + ldx b + jsr slow_multiply + lda slow_multiply.return + sta ms + lda slow_multiply.return+1 + sta ms+1 + ldx a + lda b + jsr asm_multiply + lda asm_multiply.return + sta ma + lda asm_multiply.return+1 + sta ma+1 + lda ms + cmp ma + bne !+ + lda ms+1 + cmp ma+1 + beq b3 + !: lda #2 sta BGCOL - jsr print_cls - lda #<$400 - sta char_cursor - lda #>$400 - sta char_cursor+1 lda #str sta print_str.str+1 jsr print_str + lda ms + sta print_word.w + lda ms+1 + sta print_word.w+1 jsr print_word lda #str1 sta print_str.str+1 jsr print_str - lda kc_sqr + lda ma sta print_word.w - lda kc_sqr+1 + lda ma+1 sta print_word.w+1 jsr print_word breturn: rts - b2: - inc asm_sqr - bne !+ - inc asm_sqr+1 - !: - inc kc_sqr - bne !+ - inc kc_sqr+1 - !: - lda kc_sqr+1 - cmp #>mul_sqr1_lo+$200*4 - bcc b1 - bne !+ - lda kc_sqr - cmp #str2 + sta print_str.str+1 + jsr print_str + jsr print_ln + lda line_cursor sta char_cursor - lda #>$400 + lda line_cursor+1 sta char_cursor+1 jmp breturn - str: .text "mul table mismatch at @" - str1: .text " / @" + str: .text "multiply mismatch slow:@" + str1: .text " / fast asm:" + str2: .text "multiply results match!@" +} +print_ln: { + b1: + lda line_cursor + clc + adc #$28 + sta line_cursor + bcc !+ + inc line_cursor+1 + !: + lda line_cursor+1 + cmp char_cursor+1 + bcc b1 + bne !+ + lda line_cursor + cmp char_cursor + bcc b1 + !: + rts +} +print_str: { + .label str = 6 + b1: + ldy #0 + lda (str),y + cmp #'@' + bne b2 + rts + b2: + ldy #0 + lda (str),y + sta (char_cursor),y + inc char_cursor + bne !+ + inc char_cursor+1 + !: + inc str + bne !+ + inc str+1 + !: + jmp b1 } print_word: { - .label w = 4 + .label w = 6 lda w+1 tax jsr print_byte @@ -114,49 +169,153 @@ print_char: { !: rts } -print_str: { - .label str = 8 +asm_multiply: { + .const memA = $fe + .const memB = $ff + .label return = 6 + stx memA + sta memB + txa + sta sm1+1 + sta sm3+1 + eor #$ff + sta sm2+1 + sta sm4+1 + ldx memB + sec + sm1: + lda asm_mul_sqr1_lo,x + sm2: + sbc asm_mul_sqr2_lo,x + sta memA + sm3: + lda asm_mul_sqr1_hi,x + sm4: + sbc asm_mul_sqr2_hi,x + sta memB + lda memA + sta return + lda memB + sta return+1 + rts +} +slow_multiply: { + .label return = 6 + .label m = 6 + .label a = 2 + lda a + cmp #0 + beq b3 + ldy #0 + tya + sta m + sta m+1 + b2: + txa + clc + adc m + sta m + bcc !+ + inc m+1 + !: + iny + cpy a + bne b2 + jmp b1 + b3: + lda #0 + sta return + sta return+1 + b1: + rts +} +mul_tables_compare: { + .label asm_sqr = $a + .label kc_sqr = 4 + lda #asm_mul_sqr1_lo + sta asm_sqr+1 + lda #mul_sqr1_lo + sta kc_sqr+1 b1: ldy #0 - lda (str),y - cmp #'@' - bne b2 + lda (kc_sqr),y + cmp (asm_sqr),y + beq b2 + lda #2 + sta BGCOL + lda #<$400 + sta char_cursor + lda #>$400 + sta char_cursor+1 + lda #str + sta print_str.str+1 + jsr print_str + lda asm_sqr + sta print_word.w + lda asm_sqr+1 + sta print_word.w+1 + jsr print_word + lda #str1 + sta print_str.str+1 + jsr print_str + lda kc_sqr + sta print_word.w + lda kc_sqr+1 + sta print_word.w+1 + jsr print_word + lda #<$400 + sta line_cursor + lda #>$400 + sta line_cursor+1 + breturn: rts b2: - ldy #0 - lda (str),y - sta (char_cursor),y - inc char_cursor + inc asm_sqr bne !+ - inc char_cursor+1 + inc asm_sqr+1 !: - inc str + inc kc_sqr bne !+ - inc str+1 + inc kc_sqr+1 + !: + lda kc_sqr+1 + cmp #>mul_sqr1_lo+$200*4 + bcc b1 + bne !+ + lda kc_sqr + cmp #$400 - sta sc+1 - b1: - ldy #0 - lda #' ' - sta (sc),y - inc sc - bne !+ - inc sc+1 - !: - lda sc+1 - cmp #>$400+$3e8 - bne b1 - lda sc - cmp #<$400+$3e8 - bne b1 - rts + sta char_cursor+1 + lda #str2 + sta print_str.str+1 + jsr print_str + lda #<$400 + sta line_cursor + lda #>$400 + sta line_cursor+1 + jsr print_ln + lda line_cursor + sta char_cursor + lda line_cursor+1 + sta char_cursor+1 + jmp breturn + str: .text "multiply table mismatch at @" + str1: .text " / @" + str2: .text "multiply tables match!@" } init_mul_tables_asm: { .const mem = $ff @@ -209,13 +368,13 @@ init_mul_tables_asm: { rts } init_mul_tables: { - .label sqr1_hi = 4 - .label sqr = 6 - .label sqr1_lo = 2 - .label x_2 = $a - .label sqr2_hi = 4 - .label sqr2_lo = 2 - .label dir = $a + .label sqr1_hi = 6 + .label sqr = 8 + .label sqr1_lo = 4 + .label x_2 = 2 + .label sqr2_hi = 6 + .label sqr2_lo = 4 + .label dir = 2 lda #0 sta x_2 lda #$400 + sta sc+1 + b1: + ldy #0 + lda #' ' + sta (sc),y + inc sc + bne !+ + inc sc+1 + !: + lda sc+1 + cmp #>$400+$3e8 + bne b1 + lda sc + cmp #<$400+$3e8 + bne b1 + rts } .align $100 mul_sqr1_lo: .fill $200, 0 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/multiply.cfg b/src/test/java/dk/camelot64/kickc/test/ref/multiply.cfg index ed379b7c3..809465d1c 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/multiply.cfg +++ b/src/test/java/dk/camelot64/kickc/test/ref/multiply.cfg @@ -1,191 +1,303 @@ @begin: scope:[] from [0] phi() [ ] ( ) - to:@10 -@10: scope:[] from @begin + to:@13 +@13: scope:[] from @begin [1] phi() [ ] ( ) [2] call main param-assignment [ ] ( ) to:@end -@end: scope:[] from @10 +@end: scope:[] from @13 [3] phi() [ ] ( ) -main: scope:[main] from @10 - [4] phi() [ ] ( main:2 [ ] ) - [5] call init_mul_tables param-assignment [ ] ( main:2 [ ] ) +main: scope:[main] from @13 + [4] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 5 [ ] ( main:2 [ ] ) + [5] call print_cls param-assignment [ ] ( main:2 [ ] ) to:main::@1 main::@1: scope:[main] from main [6] phi() [ ] ( main:2 [ ] ) - [7] call init_mul_tables_asm param-assignment [ ] ( main:2 [ ] ) + [7] call init_mul_tables param-assignment [ ] ( main:2 [ ] ) to:main::@2 main::@2: scope:[main] from main::@1 [8] phi() [ ] ( main:2 [ ] ) - [9] call mul_tables_compare param-assignment [ ] ( main:2 [ ] ) + [9] call init_mul_tables_asm param-assignment [ ] ( main:2 [ ] ) + to:main::@3 +main::@3: scope:[main] from main::@2 + [10] phi() [ ] ( main:2 [ ] ) + [11] call mul_tables_compare param-assignment [ line_cursor#17 char_cursor#20 ] ( main:2 [ line_cursor#17 char_cursor#20 ] ) + to:main::@4 +main::@4: scope:[main] from main::@3 + [12] phi() [ line_cursor#17 char_cursor#20 ] ( main:2 [ line_cursor#17 char_cursor#20 ] ) + [13] call mul_results_compare param-assignment [ ] ( main:2 [ ] ) to:main::@return -main::@return: scope:[main] from main::@2 - [10] return [ ] ( main:2 [ ] ) +main::@return: scope:[main] from main::@4 + [14] return [ ] ( main:2 [ ] ) to:@return -mul_tables_compare: scope:[mul_tables_compare] from main::@2 - [11] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 5 [ ] ( main:2::mul_tables_compare:9 [ ] ) - to:mul_tables_compare::@1 -mul_tables_compare::@1: scope:[mul_tables_compare] from mul_tables_compare mul_tables_compare::@2 - [12] (byte*) mul_tables_compare::asm_sqr#2 ← phi( mul_tables_compare/(const byte[512]) asm_mul_sqr1_lo#0 mul_tables_compare::@2/(byte*) mul_tables_compare::asm_sqr#1 ) [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 ] ( main:2::mul_tables_compare:9 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 ] ) - [12] (byte*) mul_tables_compare::kc_sqr#2 ← phi( mul_tables_compare/(const byte[512]) mul_sqr1_lo#0 mul_tables_compare::@2/(byte*) mul_tables_compare::kc_sqr#1 ) [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 ] ( main:2::mul_tables_compare:9 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 ] ) - [13] if(*((byte*) mul_tables_compare::kc_sqr#2)==*((byte*) mul_tables_compare::asm_sqr#2)) goto mul_tables_compare::@2 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 ] ( main:2::mul_tables_compare:9 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 ] ) - to:mul_tables_compare::@3 -mul_tables_compare::@3: scope:[mul_tables_compare] from mul_tables_compare::@1 - [14] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 2 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 ] ( main:2::mul_tables_compare:9 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 ] ) - [15] call print_cls param-assignment [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 ] ( main:2::mul_tables_compare:9 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 ] ) - to:mul_tables_compare::@6 -mul_tables_compare::@6: scope:[mul_tables_compare] from mul_tables_compare::@3 - [16] phi() [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 ] ( main:2::mul_tables_compare:9 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 ] ) - [17] call print_str param-assignment [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 char_cursor#19 ] ( main:2::mul_tables_compare:9 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 char_cursor#19 ] ) - to:mul_tables_compare::@7 -mul_tables_compare::@7: scope:[mul_tables_compare] from mul_tables_compare::@6 - [18] (word) print_word::w#0 ← ((word)) (byte*) mul_tables_compare::asm_sqr#2 [ mul_tables_compare::kc_sqr#2 print_word::w#0 char_cursor#19 ] ( main:2::mul_tables_compare:9 [ mul_tables_compare::kc_sqr#2 print_word::w#0 char_cursor#19 ] ) - [19] call print_word param-assignment [ mul_tables_compare::kc_sqr#2 char_cursor#10 ] ( main:2::mul_tables_compare:9 [ mul_tables_compare::kc_sqr#2 char_cursor#10 ] ) - to:mul_tables_compare::@8 -mul_tables_compare::@8: scope:[mul_tables_compare] from mul_tables_compare::@7 - [20] phi() [ mul_tables_compare::kc_sqr#2 char_cursor#10 ] ( main:2::mul_tables_compare:9 [ mul_tables_compare::kc_sqr#2 char_cursor#10 ] ) - [21] call print_str param-assignment [ mul_tables_compare::kc_sqr#2 char_cursor#19 ] ( main:2::mul_tables_compare:9 [ mul_tables_compare::kc_sqr#2 char_cursor#19 ] ) - to:mul_tables_compare::@9 -mul_tables_compare::@9: scope:[mul_tables_compare] from mul_tables_compare::@8 - [22] (word) print_word::w#1 ← ((word)) (byte*) mul_tables_compare::kc_sqr#2 [ print_word::w#1 char_cursor#19 ] ( main:2::mul_tables_compare:9 [ print_word::w#1 char_cursor#19 ] ) - [23] call print_word param-assignment [ char_cursor#10 ] ( main:2::mul_tables_compare:9 [ char_cursor#10 ] ) - to:mul_tables_compare::@return -mul_tables_compare::@return: scope:[mul_tables_compare] from mul_tables_compare::@2 mul_tables_compare::@9 - [24] (byte*) char_cursor#17 ← phi( mul_tables_compare::@9/(byte*) char_cursor#10 mul_tables_compare::@2/((byte*))(word/signed word) 1024 ) [ ] ( main:2::mul_tables_compare:9 [ ] ) - [25] return [ ] ( main:2::mul_tables_compare:9 [ ] ) +mul_results_compare: scope:[mul_results_compare] from main::@4 + [15] phi() [ line_cursor#17 char_cursor#20 ] ( main:2::mul_results_compare:13 [ line_cursor#17 char_cursor#20 ] ) + to:mul_results_compare::@1 +mul_results_compare::@1: scope:[mul_results_compare] from mul_results_compare mul_results_compare::@6 + [16] (byte) mul_results_compare::a#5 ← phi( mul_results_compare/(byte/signed byte/word/signed word) 0 mul_results_compare::@6/(byte) mul_results_compare::a#1 ) [ mul_results_compare::a#5 line_cursor#17 char_cursor#20 ] ( main:2::mul_results_compare:13 [ mul_results_compare::a#5 line_cursor#17 char_cursor#20 ] ) + to:mul_results_compare::@2 +mul_results_compare::@2: scope:[mul_results_compare] from mul_results_compare::@1 mul_results_compare::@3 + [17] (byte) mul_results_compare::b#2 ← phi( mul_results_compare::@1/(byte/signed byte/word/signed word) 0 mul_results_compare::@3/(byte) mul_results_compare::b#1 ) [ mul_results_compare::a#5 mul_results_compare::b#2 line_cursor#17 char_cursor#20 ] ( main:2::mul_results_compare:13 [ mul_results_compare::a#5 mul_results_compare::b#2 line_cursor#17 char_cursor#20 ] ) + [18] (byte) slow_multiply::a#0 ← (byte) mul_results_compare::a#5 [ mul_results_compare::a#5 mul_results_compare::b#2 slow_multiply::a#0 line_cursor#17 char_cursor#20 ] ( main:2::mul_results_compare:13 [ mul_results_compare::a#5 mul_results_compare::b#2 slow_multiply::a#0 line_cursor#17 char_cursor#20 ] ) + [19] (byte) slow_multiply::b#0 ← (byte) mul_results_compare::b#2 [ mul_results_compare::a#5 mul_results_compare::b#2 slow_multiply::a#0 slow_multiply::b#0 line_cursor#17 char_cursor#20 ] ( main:2::mul_results_compare:13 [ mul_results_compare::a#5 mul_results_compare::b#2 slow_multiply::a#0 slow_multiply::b#0 line_cursor#17 char_cursor#20 ] ) + [20] call slow_multiply param-assignment [ mul_results_compare::a#5 mul_results_compare::b#2 slow_multiply::return#0 line_cursor#17 char_cursor#20 ] ( main:2::mul_results_compare:13 [ mul_results_compare::a#5 mul_results_compare::b#2 slow_multiply::return#0 line_cursor#17 char_cursor#20 ] ) + [21] (word) slow_multiply::return#2 ← (word) slow_multiply::return#0 [ mul_results_compare::a#5 mul_results_compare::b#2 slow_multiply::return#2 line_cursor#17 char_cursor#20 ] ( main:2::mul_results_compare:13 [ mul_results_compare::a#5 mul_results_compare::b#2 slow_multiply::return#2 line_cursor#17 char_cursor#20 ] ) + to:mul_results_compare::@8 +mul_results_compare::@8: scope:[mul_results_compare] from mul_results_compare::@2 + [22] (word) mul_results_compare::ms#0 ← (word) slow_multiply::return#2 [ mul_results_compare::a#5 mul_results_compare::b#2 mul_results_compare::ms#0 line_cursor#17 char_cursor#20 ] ( main:2::mul_results_compare:13 [ mul_results_compare::a#5 mul_results_compare::b#2 mul_results_compare::ms#0 line_cursor#17 char_cursor#20 ] ) + [23] (byte) asm_multiply::a#0 ← (byte) mul_results_compare::a#5 [ mul_results_compare::a#5 mul_results_compare::b#2 mul_results_compare::ms#0 asm_multiply::a#0 line_cursor#17 char_cursor#20 ] ( main:2::mul_results_compare:13 [ mul_results_compare::a#5 mul_results_compare::b#2 mul_results_compare::ms#0 asm_multiply::a#0 line_cursor#17 char_cursor#20 ] ) + [24] (byte) asm_multiply::b#0 ← (byte) mul_results_compare::b#2 [ mul_results_compare::a#5 mul_results_compare::b#2 mul_results_compare::ms#0 asm_multiply::a#0 asm_multiply::b#0 line_cursor#17 char_cursor#20 ] ( main:2::mul_results_compare:13 [ mul_results_compare::a#5 mul_results_compare::b#2 mul_results_compare::ms#0 asm_multiply::a#0 asm_multiply::b#0 line_cursor#17 char_cursor#20 ] ) + [25] call asm_multiply param-assignment [ mul_results_compare::a#5 mul_results_compare::b#2 mul_results_compare::ms#0 asm_multiply::return#0 line_cursor#17 char_cursor#20 ] ( main:2::mul_results_compare:13 [ mul_results_compare::a#5 mul_results_compare::b#2 mul_results_compare::ms#0 asm_multiply::return#0 line_cursor#17 char_cursor#20 ] ) + [26] (word) asm_multiply::return#2 ← (word) asm_multiply::return#0 [ mul_results_compare::a#5 mul_results_compare::b#2 mul_results_compare::ms#0 asm_multiply::return#2 line_cursor#17 char_cursor#20 ] ( main:2::mul_results_compare:13 [ mul_results_compare::a#5 mul_results_compare::b#2 mul_results_compare::ms#0 asm_multiply::return#2 line_cursor#17 char_cursor#20 ] ) + to:mul_results_compare::@9 +mul_results_compare::@9: scope:[mul_results_compare] from mul_results_compare::@8 + [27] (word) mul_results_compare::ma#0 ← (word) asm_multiply::return#2 [ mul_results_compare::a#5 mul_results_compare::b#2 mul_results_compare::ms#0 mul_results_compare::ma#0 line_cursor#17 char_cursor#20 ] ( main:2::mul_results_compare:13 [ mul_results_compare::a#5 mul_results_compare::b#2 mul_results_compare::ms#0 mul_results_compare::ma#0 line_cursor#17 char_cursor#20 ] ) + [28] if((word) mul_results_compare::ms#0==(word) mul_results_compare::ma#0) goto mul_results_compare::@3 [ mul_results_compare::a#5 mul_results_compare::b#2 mul_results_compare::ms#0 mul_results_compare::ma#0 line_cursor#17 char_cursor#20 ] ( main:2::mul_results_compare:13 [ mul_results_compare::a#5 mul_results_compare::b#2 mul_results_compare::ms#0 mul_results_compare::ma#0 line_cursor#17 char_cursor#20 ] ) + to:mul_results_compare::@4 +mul_results_compare::@4: scope:[mul_results_compare] from mul_results_compare::@9 + [29] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 2 [ mul_results_compare::ms#0 mul_results_compare::ma#0 line_cursor#17 char_cursor#20 ] ( main:2::mul_results_compare:13 [ mul_results_compare::ms#0 mul_results_compare::ma#0 line_cursor#17 char_cursor#20 ] ) + [30] call print_str param-assignment [ mul_results_compare::ms#0 mul_results_compare::ma#0 line_cursor#17 char_cursor#2 ] ( main:2::mul_results_compare:13 [ mul_results_compare::ms#0 mul_results_compare::ma#0 line_cursor#17 char_cursor#2 ] ) + to:mul_results_compare::@10 +mul_results_compare::@10: scope:[mul_results_compare] from mul_results_compare::@4 + [31] (word) print_word::w#2 ← (word) mul_results_compare::ms#0 [ mul_results_compare::ma#0 print_word::w#2 line_cursor#17 char_cursor#2 ] ( main:2::mul_results_compare:13 [ mul_results_compare::ma#0 print_word::w#2 line_cursor#17 char_cursor#2 ] ) + [32] call print_word param-assignment [ mul_results_compare::ma#0 char_cursor#11 line_cursor#17 ] ( main:2::mul_results_compare:13 [ mul_results_compare::ma#0 char_cursor#11 line_cursor#17 ] ) + to:mul_results_compare::@11 +mul_results_compare::@11: scope:[mul_results_compare] from mul_results_compare::@10 + [33] phi() [ mul_results_compare::ma#0 char_cursor#11 line_cursor#17 ] ( main:2::mul_results_compare:13 [ mul_results_compare::ma#0 char_cursor#11 line_cursor#17 ] ) + [34] call print_str param-assignment [ mul_results_compare::ma#0 line_cursor#17 char_cursor#2 ] ( main:2::mul_results_compare:13 [ mul_results_compare::ma#0 line_cursor#17 char_cursor#2 ] ) + to:mul_results_compare::@12 +mul_results_compare::@12: scope:[mul_results_compare] from mul_results_compare::@11 + [35] (word) print_word::w#3 ← (word) mul_results_compare::ma#0 [ print_word::w#3 line_cursor#17 char_cursor#2 ] ( main:2::mul_results_compare:13 [ print_word::w#3 line_cursor#17 char_cursor#2 ] ) + [36] call print_word param-assignment [ char_cursor#11 line_cursor#17 ] ( main:2::mul_results_compare:13 [ char_cursor#11 line_cursor#17 ] ) + to:mul_results_compare::@return +mul_results_compare::@return: scope:[mul_results_compare] from mul_results_compare::@12 mul_results_compare::@14 + [37] (byte*) line_cursor#19 ← phi( mul_results_compare::@12/(byte*) line_cursor#17 mul_results_compare::@14/(byte*) line_cursor#1 ) [ ] ( main:2::mul_results_compare:13 [ ] ) + [37] (byte*) char_cursor#27 ← phi( mul_results_compare::@12/(byte*) char_cursor#11 mul_results_compare::@14/(byte*~) char_cursor#89 ) [ ] ( main:2::mul_results_compare:13 [ ] ) + [38] return [ ] ( main:2::mul_results_compare:13 [ ] ) to:@return -mul_tables_compare::@2: scope:[mul_tables_compare] from mul_tables_compare::@1 - [26] (byte*) mul_tables_compare::asm_sqr#1 ← ++ (byte*) mul_tables_compare::asm_sqr#2 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#1 ] ( main:2::mul_tables_compare:9 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#1 ] ) - [27] (byte*) mul_tables_compare::kc_sqr#1 ← ++ (byte*) mul_tables_compare::kc_sqr#2 [ mul_tables_compare::kc_sqr#1 mul_tables_compare::asm_sqr#1 ] ( main:2::mul_tables_compare:9 [ mul_tables_compare::kc_sqr#1 mul_tables_compare::asm_sqr#1 ] ) - [28] if((byte*) mul_tables_compare::kc_sqr#1<(const byte[512]) mul_sqr1_lo#0+(word/signed word) 512*(byte/signed byte/word/signed word) 4) goto mul_tables_compare::@1 [ mul_tables_compare::kc_sqr#1 mul_tables_compare::asm_sqr#1 ] ( main:2::mul_tables_compare:9 [ mul_tables_compare::kc_sqr#1 mul_tables_compare::asm_sqr#1 ] ) - to:mul_tables_compare::@return -print_word: scope:[print_word] from mul_tables_compare::@7 mul_tables_compare::@9 - [29] (word) print_word::w#2 ← phi( mul_tables_compare::@7/(word) print_word::w#0 mul_tables_compare::@9/(word) print_word::w#1 ) [ print_word::w#2 char_cursor#19 ] ( main:2::mul_tables_compare:9::print_word:19 [ mul_tables_compare::kc_sqr#2 print_word::w#2 char_cursor#19 ] main:2::mul_tables_compare:9::print_word:23 [ print_word::w#2 char_cursor#19 ] ) - [30] (byte) print_byte::b#0 ← > (word) print_word::w#2 [ print_word::w#2 print_byte::b#0 char_cursor#19 ] ( main:2::mul_tables_compare:9::print_word:19 [ mul_tables_compare::kc_sqr#2 print_word::w#2 print_byte::b#0 char_cursor#19 ] main:2::mul_tables_compare:9::print_word:23 [ print_word::w#2 print_byte::b#0 char_cursor#19 ] ) - [31] call print_byte param-assignment [ char_cursor#10 print_word::w#2 ] ( main:2::mul_tables_compare:9::print_word:19 [ mul_tables_compare::kc_sqr#2 char_cursor#10 print_word::w#2 ] main:2::mul_tables_compare:9::print_word:23 [ char_cursor#10 print_word::w#2 ] ) - to:print_word::@1 -print_word::@1: scope:[print_word] from print_word - [32] (byte) print_byte::b#1 ← < (word) print_word::w#2 [ char_cursor#10 print_byte::b#1 ] ( main:2::mul_tables_compare:9::print_word:19 [ mul_tables_compare::kc_sqr#2 char_cursor#10 print_byte::b#1 ] main:2::mul_tables_compare:9::print_word:23 [ char_cursor#10 print_byte::b#1 ] ) - [33] call print_byte param-assignment [ char_cursor#10 ] ( main:2::mul_tables_compare:9::print_word:19 [ mul_tables_compare::kc_sqr#2 char_cursor#10 ] main:2::mul_tables_compare:9::print_word:23 [ char_cursor#10 ] ) - to:print_word::@return -print_word::@return: scope:[print_word] from print_word::@1 - [34] return [ char_cursor#10 ] ( main:2::mul_tables_compare:9::print_word:19 [ mul_tables_compare::kc_sqr#2 char_cursor#10 ] main:2::mul_tables_compare:9::print_word:23 [ char_cursor#10 ] ) +mul_results_compare::@3: scope:[mul_results_compare] from mul_results_compare::@9 + [39] (byte) mul_results_compare::b#1 ← ++ (byte) mul_results_compare::b#2 [ mul_results_compare::a#5 mul_results_compare::b#1 line_cursor#17 char_cursor#20 ] ( main:2::mul_results_compare:13 [ mul_results_compare::a#5 mul_results_compare::b#1 line_cursor#17 char_cursor#20 ] ) + [40] if((byte) mul_results_compare::b#1!=(byte/signed byte/word/signed word) 0) goto mul_results_compare::@2 [ mul_results_compare::a#5 mul_results_compare::b#1 line_cursor#17 char_cursor#20 ] ( main:2::mul_results_compare:13 [ mul_results_compare::a#5 mul_results_compare::b#1 line_cursor#17 char_cursor#20 ] ) + to:mul_results_compare::@6 +mul_results_compare::@6: scope:[mul_results_compare] from mul_results_compare::@3 + [41] (byte) mul_results_compare::a#1 ← ++ (byte) mul_results_compare::a#5 [ mul_results_compare::a#1 line_cursor#17 char_cursor#20 ] ( main:2::mul_results_compare:13 [ mul_results_compare::a#1 line_cursor#17 char_cursor#20 ] ) + [42] if((byte) mul_results_compare::a#1!=(byte/signed byte/word/signed word) 0) goto mul_results_compare::@1 [ mul_results_compare::a#1 line_cursor#17 char_cursor#20 ] ( main:2::mul_results_compare:13 [ mul_results_compare::a#1 line_cursor#17 char_cursor#20 ] ) + to:mul_results_compare::@7 +mul_results_compare::@7: scope:[mul_results_compare] from mul_results_compare::@6 + [43] phi() [ line_cursor#17 char_cursor#20 ] ( main:2::mul_results_compare:13 [ line_cursor#17 char_cursor#20 ] ) + [44] call print_str param-assignment [ line_cursor#17 char_cursor#2 ] ( main:2::mul_results_compare:13 [ line_cursor#17 char_cursor#2 ] ) + to:mul_results_compare::@14 +mul_results_compare::@14: scope:[mul_results_compare] from mul_results_compare::@7 + [45] phi() [ line_cursor#17 char_cursor#2 ] ( main:2::mul_results_compare:13 [ line_cursor#17 char_cursor#2 ] ) + [46] call print_ln param-assignment [ line_cursor#1 ] ( main:2::mul_results_compare:13 [ line_cursor#1 ] ) + [47] (byte*~) char_cursor#89 ← (byte*) line_cursor#1 [ char_cursor#89 line_cursor#1 ] ( main:2::mul_results_compare:13 [ char_cursor#89 line_cursor#1 ] ) + to:mul_results_compare::@return +print_ln: scope:[print_ln] from mul_results_compare::@14 mul_tables_compare::@10 + [48] (byte*) line_cursor#22 ← phi( mul_results_compare::@14/(byte*) line_cursor#17 mul_tables_compare::@10/((byte*))(word/signed word) 1024 ) [ line_cursor#22 char_cursor#2 ] ( main:2::mul_results_compare:13::print_ln:46 [ line_cursor#22 char_cursor#2 ] main:2::mul_tables_compare:11::print_ln:109 [ line_cursor#22 char_cursor#2 ] ) + to:print_ln::@1 +print_ln::@1: scope:[print_ln] from print_ln print_ln::@1 + [49] (byte*) line_cursor#11 ← phi( print_ln/(byte*) line_cursor#22 print_ln::@1/(byte*) line_cursor#1 ) [ line_cursor#11 char_cursor#2 ] ( main:2::mul_results_compare:13::print_ln:46 [ line_cursor#11 char_cursor#2 ] main:2::mul_tables_compare:11::print_ln:109 [ line_cursor#11 char_cursor#2 ] ) + [50] (byte*) line_cursor#1 ← (byte*) line_cursor#11 + (byte/signed byte/word/signed word) 40 [ line_cursor#1 char_cursor#2 ] ( main:2::mul_results_compare:13::print_ln:46 [ line_cursor#1 char_cursor#2 ] main:2::mul_tables_compare:11::print_ln:109 [ line_cursor#1 char_cursor#2 ] ) + [51] if((byte*) line_cursor#1<(byte*) char_cursor#2) goto print_ln::@1 [ line_cursor#1 char_cursor#2 ] ( main:2::mul_results_compare:13::print_ln:46 [ line_cursor#1 char_cursor#2 ] main:2::mul_tables_compare:11::print_ln:109 [ line_cursor#1 char_cursor#2 ] ) + to:print_ln::@return +print_ln::@return: scope:[print_ln] from print_ln::@1 + [52] return [ line_cursor#1 ] ( main:2::mul_results_compare:13::print_ln:46 [ line_cursor#1 ] main:2::mul_tables_compare:11::print_ln:109 [ line_cursor#1 ] ) to:@return -print_byte: scope:[print_byte] from print_word print_word::@1 - [35] (byte*) char_cursor#39 ← phi( print_word/(byte*) char_cursor#19 print_word::@1/(byte*) char_cursor#10 ) [ print_byte::b#2 char_cursor#39 ] ( main:2::mul_tables_compare:9::print_word:19::print_byte:31 [ mul_tables_compare::kc_sqr#2 print_word::w#2 print_byte::b#2 char_cursor#39 ] main:2::mul_tables_compare:9::print_word:23::print_byte:31 [ print_word::w#2 print_byte::b#2 char_cursor#39 ] main:2::mul_tables_compare:9::print_word:19::print_byte:33 [ mul_tables_compare::kc_sqr#2 print_byte::b#2 char_cursor#39 ] main:2::mul_tables_compare:9::print_word:23::print_byte:33 [ print_byte::b#2 char_cursor#39 ] ) - [35] (byte) print_byte::b#2 ← phi( print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 ) [ print_byte::b#2 char_cursor#39 ] ( main:2::mul_tables_compare:9::print_word:19::print_byte:31 [ mul_tables_compare::kc_sqr#2 print_word::w#2 print_byte::b#2 char_cursor#39 ] main:2::mul_tables_compare:9::print_word:23::print_byte:31 [ print_word::w#2 print_byte::b#2 char_cursor#39 ] main:2::mul_tables_compare:9::print_word:19::print_byte:33 [ mul_tables_compare::kc_sqr#2 print_byte::b#2 char_cursor#39 ] main:2::mul_tables_compare:9::print_word:23::print_byte:33 [ print_byte::b#2 char_cursor#39 ] ) - [36] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word) 4 [ print_byte::b#2 char_cursor#39 print_byte::$0 ] ( main:2::mul_tables_compare:9::print_word:19::print_byte:31 [ mul_tables_compare::kc_sqr#2 print_word::w#2 print_byte::b#2 char_cursor#39 print_byte::$0 ] main:2::mul_tables_compare:9::print_word:23::print_byte:31 [ print_word::w#2 print_byte::b#2 char_cursor#39 print_byte::$0 ] main:2::mul_tables_compare:9::print_word:19::print_byte:33 [ mul_tables_compare::kc_sqr#2 print_byte::b#2 char_cursor#39 print_byte::$0 ] main:2::mul_tables_compare:9::print_word:23::print_byte:33 [ print_byte::b#2 char_cursor#39 print_byte::$0 ] ) - [37] (byte) print_char::ch#0 ← *((const byte[]) print_byte::hextab#0 + (byte~) print_byte::$0) [ print_byte::b#2 char_cursor#39 print_char::ch#0 ] ( main:2::mul_tables_compare:9::print_word:19::print_byte:31 [ mul_tables_compare::kc_sqr#2 print_word::w#2 print_byte::b#2 char_cursor#39 print_char::ch#0 ] main:2::mul_tables_compare:9::print_word:23::print_byte:31 [ print_word::w#2 print_byte::b#2 char_cursor#39 print_char::ch#0 ] main:2::mul_tables_compare:9::print_word:19::print_byte:33 [ mul_tables_compare::kc_sqr#2 print_byte::b#2 char_cursor#39 print_char::ch#0 ] main:2::mul_tables_compare:9::print_word:23::print_byte:33 [ print_byte::b#2 char_cursor#39 print_char::ch#0 ] ) - [38] call print_char param-assignment [ char_cursor#10 print_byte::b#2 ] ( main:2::mul_tables_compare:9::print_word:19::print_byte:31 [ mul_tables_compare::kc_sqr#2 print_word::w#2 char_cursor#10 print_byte::b#2 ] main:2::mul_tables_compare:9::print_word:23::print_byte:31 [ print_word::w#2 char_cursor#10 print_byte::b#2 ] main:2::mul_tables_compare:9::print_word:19::print_byte:33 [ mul_tables_compare::kc_sqr#2 char_cursor#10 print_byte::b#2 ] main:2::mul_tables_compare:9::print_word:23::print_byte:33 [ char_cursor#10 print_byte::b#2 ] ) - to:print_byte::@1 -print_byte::@1: scope:[print_byte] from print_byte - [39] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word) 15 [ char_cursor#10 print_byte::$2 ] ( main:2::mul_tables_compare:9::print_word:19::print_byte:31 [ mul_tables_compare::kc_sqr#2 print_word::w#2 char_cursor#10 print_byte::$2 ] main:2::mul_tables_compare:9::print_word:23::print_byte:31 [ print_word::w#2 char_cursor#10 print_byte::$2 ] main:2::mul_tables_compare:9::print_word:19::print_byte:33 [ mul_tables_compare::kc_sqr#2 char_cursor#10 print_byte::$2 ] main:2::mul_tables_compare:9::print_word:23::print_byte:33 [ char_cursor#10 print_byte::$2 ] ) - [40] (byte) print_char::ch#1 ← *((const byte[]) print_byte::hextab#0 + (byte~) print_byte::$2) [ char_cursor#10 print_char::ch#1 ] ( main:2::mul_tables_compare:9::print_word:19::print_byte:31 [ mul_tables_compare::kc_sqr#2 print_word::w#2 char_cursor#10 print_char::ch#1 ] main:2::mul_tables_compare:9::print_word:23::print_byte:31 [ print_word::w#2 char_cursor#10 print_char::ch#1 ] main:2::mul_tables_compare:9::print_word:19::print_byte:33 [ mul_tables_compare::kc_sqr#2 char_cursor#10 print_char::ch#1 ] main:2::mul_tables_compare:9::print_word:23::print_byte:33 [ char_cursor#10 print_char::ch#1 ] ) - [41] call print_char param-assignment [ char_cursor#10 ] ( main:2::mul_tables_compare:9::print_word:19::print_byte:31 [ mul_tables_compare::kc_sqr#2 print_word::w#2 char_cursor#10 ] main:2::mul_tables_compare:9::print_word:23::print_byte:31 [ print_word::w#2 char_cursor#10 ] main:2::mul_tables_compare:9::print_word:19::print_byte:33 [ mul_tables_compare::kc_sqr#2 char_cursor#10 ] main:2::mul_tables_compare:9::print_word:23::print_byte:33 [ char_cursor#10 ] ) - to:print_byte::@return -print_byte::@return: scope:[print_byte] from print_byte::@1 - [42] return [ char_cursor#10 ] ( main:2::mul_tables_compare:9::print_word:19::print_byte:31 [ mul_tables_compare::kc_sqr#2 print_word::w#2 char_cursor#10 ] main:2::mul_tables_compare:9::print_word:23::print_byte:31 [ print_word::w#2 char_cursor#10 ] main:2::mul_tables_compare:9::print_word:19::print_byte:33 [ mul_tables_compare::kc_sqr#2 char_cursor#10 ] main:2::mul_tables_compare:9::print_word:23::print_byte:33 [ char_cursor#10 ] ) - to:@return -print_char: scope:[print_char] from print_byte print_byte::@1 - [43] (byte*) char_cursor#27 ← phi( print_byte/(byte*) char_cursor#39 print_byte::@1/(byte*) char_cursor#10 ) [ print_char::ch#2 char_cursor#27 ] ( main:2::mul_tables_compare:9::print_word:19::print_byte:31::print_char:38 [ mul_tables_compare::kc_sqr#2 print_word::w#2 print_byte::b#2 print_char::ch#2 char_cursor#27 ] main:2::mul_tables_compare:9::print_word:23::print_byte:31::print_char:38 [ print_word::w#2 print_byte::b#2 print_char::ch#2 char_cursor#27 ] main:2::mul_tables_compare:9::print_word:19::print_byte:33::print_char:38 [ mul_tables_compare::kc_sqr#2 print_byte::b#2 print_char::ch#2 char_cursor#27 ] main:2::mul_tables_compare:9::print_word:23::print_byte:33::print_char:38 [ print_byte::b#2 print_char::ch#2 char_cursor#27 ] main:2::mul_tables_compare:9::print_word:19::print_byte:31::print_char:41 [ mul_tables_compare::kc_sqr#2 print_word::w#2 print_char::ch#2 char_cursor#27 ] main:2::mul_tables_compare:9::print_word:23::print_byte:31::print_char:41 [ print_word::w#2 print_char::ch#2 char_cursor#27 ] main:2::mul_tables_compare:9::print_word:19::print_byte:33::print_char:41 [ mul_tables_compare::kc_sqr#2 print_char::ch#2 char_cursor#27 ] main:2::mul_tables_compare:9::print_word:23::print_byte:33::print_char:41 [ print_char::ch#2 char_cursor#27 ] ) - [43] (byte) print_char::ch#2 ← phi( print_byte/(byte) print_char::ch#0 print_byte::@1/(byte) print_char::ch#1 ) [ print_char::ch#2 char_cursor#27 ] ( main:2::mul_tables_compare:9::print_word:19::print_byte:31::print_char:38 [ mul_tables_compare::kc_sqr#2 print_word::w#2 print_byte::b#2 print_char::ch#2 char_cursor#27 ] main:2::mul_tables_compare:9::print_word:23::print_byte:31::print_char:38 [ print_word::w#2 print_byte::b#2 print_char::ch#2 char_cursor#27 ] main:2::mul_tables_compare:9::print_word:19::print_byte:33::print_char:38 [ mul_tables_compare::kc_sqr#2 print_byte::b#2 print_char::ch#2 char_cursor#27 ] main:2::mul_tables_compare:9::print_word:23::print_byte:33::print_char:38 [ print_byte::b#2 print_char::ch#2 char_cursor#27 ] main:2::mul_tables_compare:9::print_word:19::print_byte:31::print_char:41 [ mul_tables_compare::kc_sqr#2 print_word::w#2 print_char::ch#2 char_cursor#27 ] main:2::mul_tables_compare:9::print_word:23::print_byte:31::print_char:41 [ print_word::w#2 print_char::ch#2 char_cursor#27 ] main:2::mul_tables_compare:9::print_word:19::print_byte:33::print_char:41 [ mul_tables_compare::kc_sqr#2 print_char::ch#2 char_cursor#27 ] main:2::mul_tables_compare:9::print_word:23::print_byte:33::print_char:41 [ print_char::ch#2 char_cursor#27 ] ) - [44] *((byte*) char_cursor#27) ← (byte) print_char::ch#2 [ char_cursor#27 ] ( main:2::mul_tables_compare:9::print_word:19::print_byte:31::print_char:38 [ mul_tables_compare::kc_sqr#2 print_word::w#2 print_byte::b#2 char_cursor#27 ] main:2::mul_tables_compare:9::print_word:23::print_byte:31::print_char:38 [ print_word::w#2 print_byte::b#2 char_cursor#27 ] main:2::mul_tables_compare:9::print_word:19::print_byte:33::print_char:38 [ mul_tables_compare::kc_sqr#2 print_byte::b#2 char_cursor#27 ] main:2::mul_tables_compare:9::print_word:23::print_byte:33::print_char:38 [ print_byte::b#2 char_cursor#27 ] main:2::mul_tables_compare:9::print_word:19::print_byte:31::print_char:41 [ mul_tables_compare::kc_sqr#2 print_word::w#2 char_cursor#27 ] main:2::mul_tables_compare:9::print_word:23::print_byte:31::print_char:41 [ print_word::w#2 char_cursor#27 ] main:2::mul_tables_compare:9::print_word:19::print_byte:33::print_char:41 [ mul_tables_compare::kc_sqr#2 char_cursor#27 ] main:2::mul_tables_compare:9::print_word:23::print_byte:33::print_char:41 [ char_cursor#27 ] ) - [45] (byte*) char_cursor#10 ← ++ (byte*) char_cursor#27 [ char_cursor#10 ] ( main:2::mul_tables_compare:9::print_word:19::print_byte:31::print_char:38 [ mul_tables_compare::kc_sqr#2 print_word::w#2 print_byte::b#2 char_cursor#10 ] main:2::mul_tables_compare:9::print_word:23::print_byte:31::print_char:38 [ print_word::w#2 print_byte::b#2 char_cursor#10 ] main:2::mul_tables_compare:9::print_word:19::print_byte:33::print_char:38 [ mul_tables_compare::kc_sqr#2 print_byte::b#2 char_cursor#10 ] main:2::mul_tables_compare:9::print_word:23::print_byte:33::print_char:38 [ print_byte::b#2 char_cursor#10 ] main:2::mul_tables_compare:9::print_word:19::print_byte:31::print_char:41 [ mul_tables_compare::kc_sqr#2 print_word::w#2 char_cursor#10 ] main:2::mul_tables_compare:9::print_word:23::print_byte:31::print_char:41 [ print_word::w#2 char_cursor#10 ] main:2::mul_tables_compare:9::print_word:19::print_byte:33::print_char:41 [ mul_tables_compare::kc_sqr#2 char_cursor#10 ] main:2::mul_tables_compare:9::print_word:23::print_byte:33::print_char:41 [ char_cursor#10 ] ) - to:print_char::@return -print_char::@return: scope:[print_char] from print_char - [46] return [ char_cursor#10 ] ( main:2::mul_tables_compare:9::print_word:19::print_byte:31::print_char:38 [ mul_tables_compare::kc_sqr#2 print_word::w#2 print_byte::b#2 char_cursor#10 ] main:2::mul_tables_compare:9::print_word:23::print_byte:31::print_char:38 [ print_word::w#2 print_byte::b#2 char_cursor#10 ] main:2::mul_tables_compare:9::print_word:19::print_byte:33::print_char:38 [ mul_tables_compare::kc_sqr#2 print_byte::b#2 char_cursor#10 ] main:2::mul_tables_compare:9::print_word:23::print_byte:33::print_char:38 [ print_byte::b#2 char_cursor#10 ] main:2::mul_tables_compare:9::print_word:19::print_byte:31::print_char:41 [ mul_tables_compare::kc_sqr#2 print_word::w#2 char_cursor#10 ] main:2::mul_tables_compare:9::print_word:23::print_byte:31::print_char:41 [ print_word::w#2 char_cursor#10 ] main:2::mul_tables_compare:9::print_word:19::print_byte:33::print_char:41 [ mul_tables_compare::kc_sqr#2 char_cursor#10 ] main:2::mul_tables_compare:9::print_word:23::print_byte:33::print_char:41 [ char_cursor#10 ] ) - to:@return -print_str: scope:[print_str] from mul_tables_compare::@6 mul_tables_compare::@8 - [47] (byte*) char_cursor#44 ← phi( mul_tables_compare::@6/((byte*))(word/signed word) 1024 mul_tables_compare::@8/(byte*) char_cursor#10 ) [ print_str::str#5 char_cursor#44 ] ( main:2::mul_tables_compare:9::print_str:17 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 print_str::str#5 char_cursor#44 ] main:2::mul_tables_compare:9::print_str:21 [ mul_tables_compare::kc_sqr#2 print_str::str#5 char_cursor#44 ] ) - [47] (byte*) print_str::str#5 ← phi( mul_tables_compare::@6/(const string) mul_tables_compare::str mul_tables_compare::@8/(const string) mul_tables_compare::str1 ) [ print_str::str#5 char_cursor#44 ] ( main:2::mul_tables_compare:9::print_str:17 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 print_str::str#5 char_cursor#44 ] main:2::mul_tables_compare:9::print_str:21 [ mul_tables_compare::kc_sqr#2 print_str::str#5 char_cursor#44 ] ) +print_str: scope:[print_str] from mul_results_compare::@11 mul_results_compare::@4 mul_results_compare::@7 mul_tables_compare::@3 mul_tables_compare::@5 mul_tables_compare::@7 + [53] (byte*) char_cursor#71 ← phi( mul_results_compare::@11/(byte*) char_cursor#11 mul_results_compare::@4/(byte*) char_cursor#20 mul_results_compare::@7/(byte*) char_cursor#20 mul_tables_compare::@3/((byte*))(word/signed word) 1024 mul_tables_compare::@5/((byte*))(word/signed word) 1024 mul_tables_compare::@7/(byte*) char_cursor#11 ) [ print_str::str#9 char_cursor#71 ] ( main:2::mul_results_compare:13::print_str:30 [ mul_results_compare::ms#0 mul_results_compare::ma#0 line_cursor#17 print_str::str#9 char_cursor#71 ] main:2::mul_results_compare:13::print_str:34 [ mul_results_compare::ma#0 line_cursor#17 print_str::str#9 char_cursor#71 ] main:2::mul_results_compare:13::print_str:44 [ line_cursor#17 print_str::str#9 char_cursor#71 ] main:2::mul_tables_compare:11::print_str:94 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 print_str::str#9 char_cursor#71 ] main:2::mul_tables_compare:11::print_str:98 [ mul_tables_compare::kc_sqr#2 print_str::str#9 char_cursor#71 ] main:2::mul_tables_compare:11::print_str:107 [ print_str::str#9 char_cursor#71 ] ) + [53] (byte*) print_str::str#9 ← phi( mul_results_compare::@11/(const string) mul_results_compare::str1 mul_results_compare::@4/(const string) mul_results_compare::str mul_results_compare::@7/(const string) mul_results_compare::str2 mul_tables_compare::@3/(const string) mul_tables_compare::str mul_tables_compare::@5/(const string) mul_tables_compare::str2 mul_tables_compare::@7/(const string) mul_tables_compare::str1 ) [ print_str::str#9 char_cursor#71 ] ( main:2::mul_results_compare:13::print_str:30 [ mul_results_compare::ms#0 mul_results_compare::ma#0 line_cursor#17 print_str::str#9 char_cursor#71 ] main:2::mul_results_compare:13::print_str:34 [ mul_results_compare::ma#0 line_cursor#17 print_str::str#9 char_cursor#71 ] main:2::mul_results_compare:13::print_str:44 [ line_cursor#17 print_str::str#9 char_cursor#71 ] main:2::mul_tables_compare:11::print_str:94 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 print_str::str#9 char_cursor#71 ] main:2::mul_tables_compare:11::print_str:98 [ mul_tables_compare::kc_sqr#2 print_str::str#9 char_cursor#71 ] main:2::mul_tables_compare:11::print_str:107 [ print_str::str#9 char_cursor#71 ] ) to:print_str::@1 print_str::@1: scope:[print_str] from print_str print_str::@2 - [48] (byte*) char_cursor#19 ← phi( print_str/(byte*) char_cursor#44 print_str::@2/(byte*) char_cursor#1 ) [ char_cursor#19 print_str::str#3 ] ( main:2::mul_tables_compare:9::print_str:17 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 char_cursor#19 print_str::str#3 ] main:2::mul_tables_compare:9::print_str:21 [ mul_tables_compare::kc_sqr#2 char_cursor#19 print_str::str#3 ] ) - [48] (byte*) print_str::str#3 ← phi( print_str/(byte*) print_str::str#5 print_str::@2/(byte*) print_str::str#0 ) [ char_cursor#19 print_str::str#3 ] ( main:2::mul_tables_compare:9::print_str:17 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 char_cursor#19 print_str::str#3 ] main:2::mul_tables_compare:9::print_str:21 [ mul_tables_compare::kc_sqr#2 char_cursor#19 print_str::str#3 ] ) - [49] if(*((byte*) print_str::str#3)!=(byte) '@') goto print_str::@2 [ char_cursor#19 print_str::str#3 ] ( main:2::mul_tables_compare:9::print_str:17 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 char_cursor#19 print_str::str#3 ] main:2::mul_tables_compare:9::print_str:21 [ mul_tables_compare::kc_sqr#2 char_cursor#19 print_str::str#3 ] ) + [54] (byte*) char_cursor#2 ← phi( print_str/(byte*) char_cursor#71 print_str::@2/(byte*) char_cursor#1 ) [ char_cursor#2 print_str::str#7 ] ( main:2::mul_results_compare:13::print_str:30 [ mul_results_compare::ms#0 mul_results_compare::ma#0 line_cursor#17 char_cursor#2 print_str::str#7 ] main:2::mul_results_compare:13::print_str:34 [ mul_results_compare::ma#0 line_cursor#17 char_cursor#2 print_str::str#7 ] main:2::mul_results_compare:13::print_str:44 [ line_cursor#17 char_cursor#2 print_str::str#7 ] main:2::mul_tables_compare:11::print_str:94 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 char_cursor#2 print_str::str#7 ] main:2::mul_tables_compare:11::print_str:98 [ mul_tables_compare::kc_sqr#2 char_cursor#2 print_str::str#7 ] main:2::mul_tables_compare:11::print_str:107 [ char_cursor#2 print_str::str#7 ] ) + [54] (byte*) print_str::str#7 ← phi( print_str/(byte*) print_str::str#9 print_str::@2/(byte*) print_str::str#0 ) [ char_cursor#2 print_str::str#7 ] ( main:2::mul_results_compare:13::print_str:30 [ mul_results_compare::ms#0 mul_results_compare::ma#0 line_cursor#17 char_cursor#2 print_str::str#7 ] main:2::mul_results_compare:13::print_str:34 [ mul_results_compare::ma#0 line_cursor#17 char_cursor#2 print_str::str#7 ] main:2::mul_results_compare:13::print_str:44 [ line_cursor#17 char_cursor#2 print_str::str#7 ] main:2::mul_tables_compare:11::print_str:94 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 char_cursor#2 print_str::str#7 ] main:2::mul_tables_compare:11::print_str:98 [ mul_tables_compare::kc_sqr#2 char_cursor#2 print_str::str#7 ] main:2::mul_tables_compare:11::print_str:107 [ char_cursor#2 print_str::str#7 ] ) + [55] if(*((byte*) print_str::str#7)!=(byte) '@') goto print_str::@2 [ char_cursor#2 print_str::str#7 ] ( main:2::mul_results_compare:13::print_str:30 [ mul_results_compare::ms#0 mul_results_compare::ma#0 line_cursor#17 char_cursor#2 print_str::str#7 ] main:2::mul_results_compare:13::print_str:34 [ mul_results_compare::ma#0 line_cursor#17 char_cursor#2 print_str::str#7 ] main:2::mul_results_compare:13::print_str:44 [ line_cursor#17 char_cursor#2 print_str::str#7 ] main:2::mul_tables_compare:11::print_str:94 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 char_cursor#2 print_str::str#7 ] main:2::mul_tables_compare:11::print_str:98 [ mul_tables_compare::kc_sqr#2 char_cursor#2 print_str::str#7 ] main:2::mul_tables_compare:11::print_str:107 [ char_cursor#2 print_str::str#7 ] ) to:print_str::@return print_str::@return: scope:[print_str] from print_str::@1 - [50] return [ char_cursor#19 ] ( main:2::mul_tables_compare:9::print_str:17 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 char_cursor#19 ] main:2::mul_tables_compare:9::print_str:21 [ mul_tables_compare::kc_sqr#2 char_cursor#19 ] ) + [56] return [ char_cursor#2 ] ( main:2::mul_results_compare:13::print_str:30 [ mul_results_compare::ms#0 mul_results_compare::ma#0 line_cursor#17 char_cursor#2 ] main:2::mul_results_compare:13::print_str:34 [ mul_results_compare::ma#0 line_cursor#17 char_cursor#2 ] main:2::mul_results_compare:13::print_str:44 [ line_cursor#17 char_cursor#2 ] main:2::mul_tables_compare:11::print_str:94 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 char_cursor#2 ] main:2::mul_tables_compare:11::print_str:98 [ mul_tables_compare::kc_sqr#2 char_cursor#2 ] main:2::mul_tables_compare:11::print_str:107 [ char_cursor#2 ] ) to:@return print_str::@2: scope:[print_str] from print_str::@1 - [51] *((byte*) char_cursor#19) ← *((byte*) print_str::str#3) [ char_cursor#19 print_str::str#3 ] ( main:2::mul_tables_compare:9::print_str:17 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 char_cursor#19 print_str::str#3 ] main:2::mul_tables_compare:9::print_str:21 [ mul_tables_compare::kc_sqr#2 char_cursor#19 print_str::str#3 ] ) - [52] (byte*) char_cursor#1 ← ++ (byte*) char_cursor#19 [ print_str::str#3 char_cursor#1 ] ( main:2::mul_tables_compare:9::print_str:17 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 print_str::str#3 char_cursor#1 ] main:2::mul_tables_compare:9::print_str:21 [ mul_tables_compare::kc_sqr#2 print_str::str#3 char_cursor#1 ] ) - [53] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#3 [ print_str::str#0 char_cursor#1 ] ( main:2::mul_tables_compare:9::print_str:17 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 print_str::str#0 char_cursor#1 ] main:2::mul_tables_compare:9::print_str:21 [ mul_tables_compare::kc_sqr#2 print_str::str#0 char_cursor#1 ] ) + [57] *((byte*) char_cursor#2) ← *((byte*) print_str::str#7) [ char_cursor#2 print_str::str#7 ] ( main:2::mul_results_compare:13::print_str:30 [ mul_results_compare::ms#0 mul_results_compare::ma#0 line_cursor#17 char_cursor#2 print_str::str#7 ] main:2::mul_results_compare:13::print_str:34 [ mul_results_compare::ma#0 line_cursor#17 char_cursor#2 print_str::str#7 ] main:2::mul_results_compare:13::print_str:44 [ line_cursor#17 char_cursor#2 print_str::str#7 ] main:2::mul_tables_compare:11::print_str:94 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 char_cursor#2 print_str::str#7 ] main:2::mul_tables_compare:11::print_str:98 [ mul_tables_compare::kc_sqr#2 char_cursor#2 print_str::str#7 ] main:2::mul_tables_compare:11::print_str:107 [ char_cursor#2 print_str::str#7 ] ) + [58] (byte*) char_cursor#1 ← ++ (byte*) char_cursor#2 [ print_str::str#7 char_cursor#1 ] ( main:2::mul_results_compare:13::print_str:30 [ mul_results_compare::ms#0 mul_results_compare::ma#0 line_cursor#17 print_str::str#7 char_cursor#1 ] main:2::mul_results_compare:13::print_str:34 [ mul_results_compare::ma#0 line_cursor#17 print_str::str#7 char_cursor#1 ] main:2::mul_results_compare:13::print_str:44 [ line_cursor#17 print_str::str#7 char_cursor#1 ] main:2::mul_tables_compare:11::print_str:94 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 print_str::str#7 char_cursor#1 ] main:2::mul_tables_compare:11::print_str:98 [ mul_tables_compare::kc_sqr#2 print_str::str#7 char_cursor#1 ] main:2::mul_tables_compare:11::print_str:107 [ print_str::str#7 char_cursor#1 ] ) + [59] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#7 [ print_str::str#0 char_cursor#1 ] ( main:2::mul_results_compare:13::print_str:30 [ mul_results_compare::ms#0 mul_results_compare::ma#0 line_cursor#17 print_str::str#0 char_cursor#1 ] main:2::mul_results_compare:13::print_str:34 [ mul_results_compare::ma#0 line_cursor#17 print_str::str#0 char_cursor#1 ] main:2::mul_results_compare:13::print_str:44 [ line_cursor#17 print_str::str#0 char_cursor#1 ] main:2::mul_tables_compare:11::print_str:94 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 print_str::str#0 char_cursor#1 ] main:2::mul_tables_compare:11::print_str:98 [ mul_tables_compare::kc_sqr#2 print_str::str#0 char_cursor#1 ] main:2::mul_tables_compare:11::print_str:107 [ print_str::str#0 char_cursor#1 ] ) to:print_str::@1 -print_cls: scope:[print_cls] from mul_tables_compare::@3 - [54] phi() [ ] ( main:2::mul_tables_compare:9::print_cls:15 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 ] ) - to:print_cls::@1 -print_cls::@1: scope:[print_cls] from print_cls print_cls::@1 - [55] (byte*) print_cls::sc#2 ← phi( print_cls/((byte*))(word/signed word) 1024 print_cls::@1/(byte*) print_cls::sc#1 ) [ print_cls::sc#2 ] ( main:2::mul_tables_compare:9::print_cls:15 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 print_cls::sc#2 ] ) - [56] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::mul_tables_compare:9::print_cls:15 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 print_cls::sc#2 ] ) - [57] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 [ print_cls::sc#1 ] ( main:2::mul_tables_compare:9::print_cls:15 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 print_cls::sc#1 ] ) - [58] if((byte*) print_cls::sc#1!=(word/signed word) 1024+(word/signed word) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::mul_tables_compare:9::print_cls:15 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 print_cls::sc#1 ] ) - to:print_cls::@return -print_cls::@return: scope:[print_cls] from print_cls::@1 - [59] return [ ] ( main:2::mul_tables_compare:9::print_cls:15 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 ] ) +print_word: scope:[print_word] from mul_results_compare::@10 mul_results_compare::@12 mul_tables_compare::@6 mul_tables_compare::@8 + [60] (word) print_word::w#4 ← phi( mul_results_compare::@10/(word) print_word::w#2 mul_results_compare::@12/(word) print_word::w#3 mul_tables_compare::@6/(word) print_word::w#0 mul_tables_compare::@8/(word) print_word::w#1 ) [ char_cursor#2 print_word::w#4 ] ( main:2::mul_results_compare:13::print_word:32 [ mul_results_compare::ma#0 line_cursor#17 char_cursor#2 print_word::w#4 ] main:2::mul_results_compare:13::print_word:36 [ line_cursor#17 char_cursor#2 print_word::w#4 ] main:2::mul_tables_compare:11::print_word:96 [ mul_tables_compare::kc_sqr#2 char_cursor#2 print_word::w#4 ] main:2::mul_tables_compare:11::print_word:100 [ char_cursor#2 print_word::w#4 ] ) + [61] (byte) print_byte::b#0 ← > (word) print_word::w#4 [ char_cursor#2 print_word::w#4 print_byte::b#0 ] ( main:2::mul_results_compare:13::print_word:32 [ mul_results_compare::ma#0 line_cursor#17 char_cursor#2 print_word::w#4 print_byte::b#0 ] main:2::mul_results_compare:13::print_word:36 [ line_cursor#17 char_cursor#2 print_word::w#4 print_byte::b#0 ] main:2::mul_tables_compare:11::print_word:96 [ mul_tables_compare::kc_sqr#2 char_cursor#2 print_word::w#4 print_byte::b#0 ] main:2::mul_tables_compare:11::print_word:100 [ char_cursor#2 print_word::w#4 print_byte::b#0 ] ) + [62] call print_byte param-assignment [ char_cursor#11 print_word::w#4 ] ( main:2::mul_results_compare:13::print_word:32 [ mul_results_compare::ma#0 line_cursor#17 char_cursor#11 print_word::w#4 ] main:2::mul_results_compare:13::print_word:36 [ line_cursor#17 char_cursor#11 print_word::w#4 ] main:2::mul_tables_compare:11::print_word:96 [ mul_tables_compare::kc_sqr#2 char_cursor#11 print_word::w#4 ] main:2::mul_tables_compare:11::print_word:100 [ char_cursor#11 print_word::w#4 ] ) + to:print_word::@1 +print_word::@1: scope:[print_word] from print_word + [63] (byte) print_byte::b#1 ← < (word) print_word::w#4 [ char_cursor#11 print_byte::b#1 ] ( main:2::mul_results_compare:13::print_word:32 [ mul_results_compare::ma#0 line_cursor#17 char_cursor#11 print_byte::b#1 ] main:2::mul_results_compare:13::print_word:36 [ line_cursor#17 char_cursor#11 print_byte::b#1 ] main:2::mul_tables_compare:11::print_word:96 [ mul_tables_compare::kc_sqr#2 char_cursor#11 print_byte::b#1 ] main:2::mul_tables_compare:11::print_word:100 [ char_cursor#11 print_byte::b#1 ] ) + [64] call print_byte param-assignment [ char_cursor#11 ] ( main:2::mul_results_compare:13::print_word:32 [ mul_results_compare::ma#0 line_cursor#17 char_cursor#11 ] main:2::mul_results_compare:13::print_word:36 [ line_cursor#17 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:96 [ mul_tables_compare::kc_sqr#2 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:100 [ char_cursor#11 ] ) + to:print_word::@return +print_word::@return: scope:[print_word] from print_word::@1 + [65] return [ char_cursor#11 ] ( main:2::mul_results_compare:13::print_word:32 [ mul_results_compare::ma#0 line_cursor#17 char_cursor#11 ] main:2::mul_results_compare:13::print_word:36 [ line_cursor#17 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:96 [ mul_tables_compare::kc_sqr#2 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:100 [ char_cursor#11 ] ) to:@return -init_mul_tables_asm: scope:[init_mul_tables_asm] from main::@1 +print_byte: scope:[print_byte] from print_word print_word::@1 + [66] (byte*) char_cursor#64 ← phi( print_word/(byte*) char_cursor#2 print_word::@1/(byte*) char_cursor#11 ) [ print_byte::b#2 char_cursor#64 ] ( main:2::mul_results_compare:13::print_word:32::print_byte:62 [ mul_results_compare::ma#0 line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#64 ] main:2::mul_results_compare:13::print_word:36::print_byte:62 [ line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#64 ] main:2::mul_tables_compare:11::print_word:96::print_byte:62 [ mul_tables_compare::kc_sqr#2 print_word::w#4 print_byte::b#2 char_cursor#64 ] main:2::mul_tables_compare:11::print_word:100::print_byte:62 [ print_word::w#4 print_byte::b#2 char_cursor#64 ] main:2::mul_results_compare:13::print_word:32::print_byte:64 [ mul_results_compare::ma#0 line_cursor#17 print_byte::b#2 char_cursor#64 ] main:2::mul_results_compare:13::print_word:36::print_byte:64 [ line_cursor#17 print_byte::b#2 char_cursor#64 ] main:2::mul_tables_compare:11::print_word:96::print_byte:64 [ mul_tables_compare::kc_sqr#2 print_byte::b#2 char_cursor#64 ] main:2::mul_tables_compare:11::print_word:100::print_byte:64 [ print_byte::b#2 char_cursor#64 ] ) + [66] (byte) print_byte::b#2 ← phi( print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 ) [ print_byte::b#2 char_cursor#64 ] ( main:2::mul_results_compare:13::print_word:32::print_byte:62 [ mul_results_compare::ma#0 line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#64 ] main:2::mul_results_compare:13::print_word:36::print_byte:62 [ line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#64 ] main:2::mul_tables_compare:11::print_word:96::print_byte:62 [ mul_tables_compare::kc_sqr#2 print_word::w#4 print_byte::b#2 char_cursor#64 ] main:2::mul_tables_compare:11::print_word:100::print_byte:62 [ print_word::w#4 print_byte::b#2 char_cursor#64 ] main:2::mul_results_compare:13::print_word:32::print_byte:64 [ mul_results_compare::ma#0 line_cursor#17 print_byte::b#2 char_cursor#64 ] main:2::mul_results_compare:13::print_word:36::print_byte:64 [ line_cursor#17 print_byte::b#2 char_cursor#64 ] main:2::mul_tables_compare:11::print_word:96::print_byte:64 [ mul_tables_compare::kc_sqr#2 print_byte::b#2 char_cursor#64 ] main:2::mul_tables_compare:11::print_word:100::print_byte:64 [ print_byte::b#2 char_cursor#64 ] ) + [67] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word) 4 [ print_byte::b#2 char_cursor#64 print_byte::$0 ] ( main:2::mul_results_compare:13::print_word:32::print_byte:62 [ mul_results_compare::ma#0 line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#64 print_byte::$0 ] main:2::mul_results_compare:13::print_word:36::print_byte:62 [ line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#64 print_byte::$0 ] main:2::mul_tables_compare:11::print_word:96::print_byte:62 [ mul_tables_compare::kc_sqr#2 print_word::w#4 print_byte::b#2 char_cursor#64 print_byte::$0 ] main:2::mul_tables_compare:11::print_word:100::print_byte:62 [ print_word::w#4 print_byte::b#2 char_cursor#64 print_byte::$0 ] main:2::mul_results_compare:13::print_word:32::print_byte:64 [ mul_results_compare::ma#0 line_cursor#17 print_byte::b#2 char_cursor#64 print_byte::$0 ] main:2::mul_results_compare:13::print_word:36::print_byte:64 [ line_cursor#17 print_byte::b#2 char_cursor#64 print_byte::$0 ] main:2::mul_tables_compare:11::print_word:96::print_byte:64 [ mul_tables_compare::kc_sqr#2 print_byte::b#2 char_cursor#64 print_byte::$0 ] main:2::mul_tables_compare:11::print_word:100::print_byte:64 [ print_byte::b#2 char_cursor#64 print_byte::$0 ] ) + [68] (byte) print_char::ch#0 ← *((const byte[]) print_byte::hextab#0 + (byte~) print_byte::$0) [ print_byte::b#2 char_cursor#64 print_char::ch#0 ] ( main:2::mul_results_compare:13::print_word:32::print_byte:62 [ mul_results_compare::ma#0 line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#64 print_char::ch#0 ] main:2::mul_results_compare:13::print_word:36::print_byte:62 [ line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#64 print_char::ch#0 ] main:2::mul_tables_compare:11::print_word:96::print_byte:62 [ mul_tables_compare::kc_sqr#2 print_word::w#4 print_byte::b#2 char_cursor#64 print_char::ch#0 ] main:2::mul_tables_compare:11::print_word:100::print_byte:62 [ print_word::w#4 print_byte::b#2 char_cursor#64 print_char::ch#0 ] main:2::mul_results_compare:13::print_word:32::print_byte:64 [ mul_results_compare::ma#0 line_cursor#17 print_byte::b#2 char_cursor#64 print_char::ch#0 ] main:2::mul_results_compare:13::print_word:36::print_byte:64 [ line_cursor#17 print_byte::b#2 char_cursor#64 print_char::ch#0 ] main:2::mul_tables_compare:11::print_word:96::print_byte:64 [ mul_tables_compare::kc_sqr#2 print_byte::b#2 char_cursor#64 print_char::ch#0 ] main:2::mul_tables_compare:11::print_word:100::print_byte:64 [ print_byte::b#2 char_cursor#64 print_char::ch#0 ] ) + [69] call print_char param-assignment [ char_cursor#11 print_byte::b#2 ] ( main:2::mul_results_compare:13::print_word:32::print_byte:62 [ mul_results_compare::ma#0 line_cursor#17 print_word::w#4 char_cursor#11 print_byte::b#2 ] main:2::mul_results_compare:13::print_word:36::print_byte:62 [ line_cursor#17 print_word::w#4 char_cursor#11 print_byte::b#2 ] main:2::mul_tables_compare:11::print_word:96::print_byte:62 [ mul_tables_compare::kc_sqr#2 print_word::w#4 char_cursor#11 print_byte::b#2 ] main:2::mul_tables_compare:11::print_word:100::print_byte:62 [ print_word::w#4 char_cursor#11 print_byte::b#2 ] main:2::mul_results_compare:13::print_word:32::print_byte:64 [ mul_results_compare::ma#0 line_cursor#17 char_cursor#11 print_byte::b#2 ] main:2::mul_results_compare:13::print_word:36::print_byte:64 [ line_cursor#17 char_cursor#11 print_byte::b#2 ] main:2::mul_tables_compare:11::print_word:96::print_byte:64 [ mul_tables_compare::kc_sqr#2 char_cursor#11 print_byte::b#2 ] main:2::mul_tables_compare:11::print_word:100::print_byte:64 [ char_cursor#11 print_byte::b#2 ] ) + to:print_byte::@1 +print_byte::@1: scope:[print_byte] from print_byte + [70] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word) 15 [ char_cursor#11 print_byte::$2 ] ( main:2::mul_results_compare:13::print_word:32::print_byte:62 [ mul_results_compare::ma#0 line_cursor#17 print_word::w#4 char_cursor#11 print_byte::$2 ] main:2::mul_results_compare:13::print_word:36::print_byte:62 [ line_cursor#17 print_word::w#4 char_cursor#11 print_byte::$2 ] main:2::mul_tables_compare:11::print_word:96::print_byte:62 [ mul_tables_compare::kc_sqr#2 print_word::w#4 char_cursor#11 print_byte::$2 ] main:2::mul_tables_compare:11::print_word:100::print_byte:62 [ print_word::w#4 char_cursor#11 print_byte::$2 ] main:2::mul_results_compare:13::print_word:32::print_byte:64 [ mul_results_compare::ma#0 line_cursor#17 char_cursor#11 print_byte::$2 ] main:2::mul_results_compare:13::print_word:36::print_byte:64 [ line_cursor#17 char_cursor#11 print_byte::$2 ] main:2::mul_tables_compare:11::print_word:96::print_byte:64 [ mul_tables_compare::kc_sqr#2 char_cursor#11 print_byte::$2 ] main:2::mul_tables_compare:11::print_word:100::print_byte:64 [ char_cursor#11 print_byte::$2 ] ) + [71] (byte) print_char::ch#1 ← *((const byte[]) print_byte::hextab#0 + (byte~) print_byte::$2) [ char_cursor#11 print_char::ch#1 ] ( main:2::mul_results_compare:13::print_word:32::print_byte:62 [ mul_results_compare::ma#0 line_cursor#17 print_word::w#4 char_cursor#11 print_char::ch#1 ] main:2::mul_results_compare:13::print_word:36::print_byte:62 [ line_cursor#17 print_word::w#4 char_cursor#11 print_char::ch#1 ] main:2::mul_tables_compare:11::print_word:96::print_byte:62 [ mul_tables_compare::kc_sqr#2 print_word::w#4 char_cursor#11 print_char::ch#1 ] main:2::mul_tables_compare:11::print_word:100::print_byte:62 [ print_word::w#4 char_cursor#11 print_char::ch#1 ] main:2::mul_results_compare:13::print_word:32::print_byte:64 [ mul_results_compare::ma#0 line_cursor#17 char_cursor#11 print_char::ch#1 ] main:2::mul_results_compare:13::print_word:36::print_byte:64 [ line_cursor#17 char_cursor#11 print_char::ch#1 ] main:2::mul_tables_compare:11::print_word:96::print_byte:64 [ mul_tables_compare::kc_sqr#2 char_cursor#11 print_char::ch#1 ] main:2::mul_tables_compare:11::print_word:100::print_byte:64 [ char_cursor#11 print_char::ch#1 ] ) + [72] call print_char param-assignment [ char_cursor#11 ] ( main:2::mul_results_compare:13::print_word:32::print_byte:62 [ mul_results_compare::ma#0 line_cursor#17 print_word::w#4 char_cursor#11 ] main:2::mul_results_compare:13::print_word:36::print_byte:62 [ line_cursor#17 print_word::w#4 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:96::print_byte:62 [ mul_tables_compare::kc_sqr#2 print_word::w#4 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:100::print_byte:62 [ print_word::w#4 char_cursor#11 ] main:2::mul_results_compare:13::print_word:32::print_byte:64 [ mul_results_compare::ma#0 line_cursor#17 char_cursor#11 ] main:2::mul_results_compare:13::print_word:36::print_byte:64 [ line_cursor#17 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:96::print_byte:64 [ mul_tables_compare::kc_sqr#2 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:100::print_byte:64 [ char_cursor#11 ] ) + to:print_byte::@return +print_byte::@return: scope:[print_byte] from print_byte::@1 + [73] return [ char_cursor#11 ] ( main:2::mul_results_compare:13::print_word:32::print_byte:62 [ mul_results_compare::ma#0 line_cursor#17 print_word::w#4 char_cursor#11 ] main:2::mul_results_compare:13::print_word:36::print_byte:62 [ line_cursor#17 print_word::w#4 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:96::print_byte:62 [ mul_tables_compare::kc_sqr#2 print_word::w#4 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:100::print_byte:62 [ print_word::w#4 char_cursor#11 ] main:2::mul_results_compare:13::print_word:32::print_byte:64 [ mul_results_compare::ma#0 line_cursor#17 char_cursor#11 ] main:2::mul_results_compare:13::print_word:36::print_byte:64 [ line_cursor#17 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:96::print_byte:64 [ mul_tables_compare::kc_sqr#2 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:100::print_byte:64 [ char_cursor#11 ] ) + to:@return +print_char: scope:[print_char] from print_byte print_byte::@1 + [74] (byte*) char_cursor#41 ← phi( print_byte/(byte*) char_cursor#64 print_byte::@1/(byte*) char_cursor#11 ) [ print_char::ch#2 char_cursor#41 ] ( main:2::mul_results_compare:13::print_word:32::print_byte:62::print_char:69 [ mul_results_compare::ma#0 line_cursor#17 print_word::w#4 print_byte::b#2 print_char::ch#2 char_cursor#41 ] main:2::mul_results_compare:13::print_word:36::print_byte:62::print_char:69 [ line_cursor#17 print_word::w#4 print_byte::b#2 print_char::ch#2 char_cursor#41 ] main:2::mul_tables_compare:11::print_word:96::print_byte:62::print_char:69 [ mul_tables_compare::kc_sqr#2 print_word::w#4 print_byte::b#2 print_char::ch#2 char_cursor#41 ] main:2::mul_tables_compare:11::print_word:100::print_byte:62::print_char:69 [ print_word::w#4 print_byte::b#2 print_char::ch#2 char_cursor#41 ] main:2::mul_results_compare:13::print_word:32::print_byte:64::print_char:69 [ mul_results_compare::ma#0 line_cursor#17 print_byte::b#2 print_char::ch#2 char_cursor#41 ] main:2::mul_results_compare:13::print_word:36::print_byte:64::print_char:69 [ line_cursor#17 print_byte::b#2 print_char::ch#2 char_cursor#41 ] main:2::mul_tables_compare:11::print_word:96::print_byte:64::print_char:69 [ mul_tables_compare::kc_sqr#2 print_byte::b#2 print_char::ch#2 char_cursor#41 ] main:2::mul_tables_compare:11::print_word:100::print_byte:64::print_char:69 [ print_byte::b#2 print_char::ch#2 char_cursor#41 ] main:2::mul_results_compare:13::print_word:32::print_byte:62::print_char:72 [ mul_results_compare::ma#0 line_cursor#17 print_word::w#4 print_char::ch#2 char_cursor#41 ] main:2::mul_results_compare:13::print_word:36::print_byte:62::print_char:72 [ line_cursor#17 print_word::w#4 print_char::ch#2 char_cursor#41 ] main:2::mul_tables_compare:11::print_word:96::print_byte:62::print_char:72 [ mul_tables_compare::kc_sqr#2 print_word::w#4 print_char::ch#2 char_cursor#41 ] main:2::mul_tables_compare:11::print_word:100::print_byte:62::print_char:72 [ print_word::w#4 print_char::ch#2 char_cursor#41 ] main:2::mul_results_compare:13::print_word:32::print_byte:64::print_char:72 [ mul_results_compare::ma#0 line_cursor#17 print_char::ch#2 char_cursor#41 ] main:2::mul_results_compare:13::print_word:36::print_byte:64::print_char:72 [ line_cursor#17 print_char::ch#2 char_cursor#41 ] main:2::mul_tables_compare:11::print_word:96::print_byte:64::print_char:72 [ mul_tables_compare::kc_sqr#2 print_char::ch#2 char_cursor#41 ] main:2::mul_tables_compare:11::print_word:100::print_byte:64::print_char:72 [ print_char::ch#2 char_cursor#41 ] ) + [74] (byte) print_char::ch#2 ← phi( print_byte/(byte) print_char::ch#0 print_byte::@1/(byte) print_char::ch#1 ) [ print_char::ch#2 char_cursor#41 ] ( main:2::mul_results_compare:13::print_word:32::print_byte:62::print_char:69 [ mul_results_compare::ma#0 line_cursor#17 print_word::w#4 print_byte::b#2 print_char::ch#2 char_cursor#41 ] main:2::mul_results_compare:13::print_word:36::print_byte:62::print_char:69 [ line_cursor#17 print_word::w#4 print_byte::b#2 print_char::ch#2 char_cursor#41 ] main:2::mul_tables_compare:11::print_word:96::print_byte:62::print_char:69 [ mul_tables_compare::kc_sqr#2 print_word::w#4 print_byte::b#2 print_char::ch#2 char_cursor#41 ] main:2::mul_tables_compare:11::print_word:100::print_byte:62::print_char:69 [ print_word::w#4 print_byte::b#2 print_char::ch#2 char_cursor#41 ] main:2::mul_results_compare:13::print_word:32::print_byte:64::print_char:69 [ mul_results_compare::ma#0 line_cursor#17 print_byte::b#2 print_char::ch#2 char_cursor#41 ] main:2::mul_results_compare:13::print_word:36::print_byte:64::print_char:69 [ line_cursor#17 print_byte::b#2 print_char::ch#2 char_cursor#41 ] main:2::mul_tables_compare:11::print_word:96::print_byte:64::print_char:69 [ mul_tables_compare::kc_sqr#2 print_byte::b#2 print_char::ch#2 char_cursor#41 ] main:2::mul_tables_compare:11::print_word:100::print_byte:64::print_char:69 [ print_byte::b#2 print_char::ch#2 char_cursor#41 ] main:2::mul_results_compare:13::print_word:32::print_byte:62::print_char:72 [ mul_results_compare::ma#0 line_cursor#17 print_word::w#4 print_char::ch#2 char_cursor#41 ] main:2::mul_results_compare:13::print_word:36::print_byte:62::print_char:72 [ line_cursor#17 print_word::w#4 print_char::ch#2 char_cursor#41 ] main:2::mul_tables_compare:11::print_word:96::print_byte:62::print_char:72 [ mul_tables_compare::kc_sqr#2 print_word::w#4 print_char::ch#2 char_cursor#41 ] main:2::mul_tables_compare:11::print_word:100::print_byte:62::print_char:72 [ print_word::w#4 print_char::ch#2 char_cursor#41 ] main:2::mul_results_compare:13::print_word:32::print_byte:64::print_char:72 [ mul_results_compare::ma#0 line_cursor#17 print_char::ch#2 char_cursor#41 ] main:2::mul_results_compare:13::print_word:36::print_byte:64::print_char:72 [ line_cursor#17 print_char::ch#2 char_cursor#41 ] main:2::mul_tables_compare:11::print_word:96::print_byte:64::print_char:72 [ mul_tables_compare::kc_sqr#2 print_char::ch#2 char_cursor#41 ] main:2::mul_tables_compare:11::print_word:100::print_byte:64::print_char:72 [ print_char::ch#2 char_cursor#41 ] ) + [75] *((byte*) char_cursor#41) ← (byte) print_char::ch#2 [ char_cursor#41 ] ( main:2::mul_results_compare:13::print_word:32::print_byte:62::print_char:69 [ mul_results_compare::ma#0 line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#41 ] main:2::mul_results_compare:13::print_word:36::print_byte:62::print_char:69 [ line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#41 ] main:2::mul_tables_compare:11::print_word:96::print_byte:62::print_char:69 [ mul_tables_compare::kc_sqr#2 print_word::w#4 print_byte::b#2 char_cursor#41 ] main:2::mul_tables_compare:11::print_word:100::print_byte:62::print_char:69 [ print_word::w#4 print_byte::b#2 char_cursor#41 ] main:2::mul_results_compare:13::print_word:32::print_byte:64::print_char:69 [ mul_results_compare::ma#0 line_cursor#17 print_byte::b#2 char_cursor#41 ] main:2::mul_results_compare:13::print_word:36::print_byte:64::print_char:69 [ line_cursor#17 print_byte::b#2 char_cursor#41 ] main:2::mul_tables_compare:11::print_word:96::print_byte:64::print_char:69 [ mul_tables_compare::kc_sqr#2 print_byte::b#2 char_cursor#41 ] main:2::mul_tables_compare:11::print_word:100::print_byte:64::print_char:69 [ print_byte::b#2 char_cursor#41 ] main:2::mul_results_compare:13::print_word:32::print_byte:62::print_char:72 [ mul_results_compare::ma#0 line_cursor#17 print_word::w#4 char_cursor#41 ] main:2::mul_results_compare:13::print_word:36::print_byte:62::print_char:72 [ line_cursor#17 print_word::w#4 char_cursor#41 ] main:2::mul_tables_compare:11::print_word:96::print_byte:62::print_char:72 [ mul_tables_compare::kc_sqr#2 print_word::w#4 char_cursor#41 ] main:2::mul_tables_compare:11::print_word:100::print_byte:62::print_char:72 [ print_word::w#4 char_cursor#41 ] main:2::mul_results_compare:13::print_word:32::print_byte:64::print_char:72 [ mul_results_compare::ma#0 line_cursor#17 char_cursor#41 ] main:2::mul_results_compare:13::print_word:36::print_byte:64::print_char:72 [ line_cursor#17 char_cursor#41 ] main:2::mul_tables_compare:11::print_word:96::print_byte:64::print_char:72 [ mul_tables_compare::kc_sqr#2 char_cursor#41 ] main:2::mul_tables_compare:11::print_word:100::print_byte:64::print_char:72 [ char_cursor#41 ] ) + [76] (byte*) char_cursor#11 ← ++ (byte*) char_cursor#41 [ char_cursor#11 ] ( main:2::mul_results_compare:13::print_word:32::print_byte:62::print_char:69 [ mul_results_compare::ma#0 line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#11 ] main:2::mul_results_compare:13::print_word:36::print_byte:62::print_char:69 [ line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:96::print_byte:62::print_char:69 [ mul_tables_compare::kc_sqr#2 print_word::w#4 print_byte::b#2 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:100::print_byte:62::print_char:69 [ print_word::w#4 print_byte::b#2 char_cursor#11 ] main:2::mul_results_compare:13::print_word:32::print_byte:64::print_char:69 [ mul_results_compare::ma#0 line_cursor#17 print_byte::b#2 char_cursor#11 ] main:2::mul_results_compare:13::print_word:36::print_byte:64::print_char:69 [ line_cursor#17 print_byte::b#2 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:96::print_byte:64::print_char:69 [ mul_tables_compare::kc_sqr#2 print_byte::b#2 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:100::print_byte:64::print_char:69 [ print_byte::b#2 char_cursor#11 ] main:2::mul_results_compare:13::print_word:32::print_byte:62::print_char:72 [ mul_results_compare::ma#0 line_cursor#17 print_word::w#4 char_cursor#11 ] main:2::mul_results_compare:13::print_word:36::print_byte:62::print_char:72 [ line_cursor#17 print_word::w#4 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:96::print_byte:62::print_char:72 [ mul_tables_compare::kc_sqr#2 print_word::w#4 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:100::print_byte:62::print_char:72 [ print_word::w#4 char_cursor#11 ] main:2::mul_results_compare:13::print_word:32::print_byte:64::print_char:72 [ mul_results_compare::ma#0 line_cursor#17 char_cursor#11 ] main:2::mul_results_compare:13::print_word:36::print_byte:64::print_char:72 [ line_cursor#17 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:96::print_byte:64::print_char:72 [ mul_tables_compare::kc_sqr#2 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:100::print_byte:64::print_char:72 [ char_cursor#11 ] ) + to:print_char::@return +print_char::@return: scope:[print_char] from print_char + [77] return [ char_cursor#11 ] ( main:2::mul_results_compare:13::print_word:32::print_byte:62::print_char:69 [ mul_results_compare::ma#0 line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#11 ] main:2::mul_results_compare:13::print_word:36::print_byte:62::print_char:69 [ line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:96::print_byte:62::print_char:69 [ mul_tables_compare::kc_sqr#2 print_word::w#4 print_byte::b#2 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:100::print_byte:62::print_char:69 [ print_word::w#4 print_byte::b#2 char_cursor#11 ] main:2::mul_results_compare:13::print_word:32::print_byte:64::print_char:69 [ mul_results_compare::ma#0 line_cursor#17 print_byte::b#2 char_cursor#11 ] main:2::mul_results_compare:13::print_word:36::print_byte:64::print_char:69 [ line_cursor#17 print_byte::b#2 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:96::print_byte:64::print_char:69 [ mul_tables_compare::kc_sqr#2 print_byte::b#2 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:100::print_byte:64::print_char:69 [ print_byte::b#2 char_cursor#11 ] main:2::mul_results_compare:13::print_word:32::print_byte:62::print_char:72 [ mul_results_compare::ma#0 line_cursor#17 print_word::w#4 char_cursor#11 ] main:2::mul_results_compare:13::print_word:36::print_byte:62::print_char:72 [ line_cursor#17 print_word::w#4 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:96::print_byte:62::print_char:72 [ mul_tables_compare::kc_sqr#2 print_word::w#4 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:100::print_byte:62::print_char:72 [ print_word::w#4 char_cursor#11 ] main:2::mul_results_compare:13::print_word:32::print_byte:64::print_char:72 [ mul_results_compare::ma#0 line_cursor#17 char_cursor#11 ] main:2::mul_results_compare:13::print_word:36::print_byte:64::print_char:72 [ line_cursor#17 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:96::print_byte:64::print_char:72 [ mul_tables_compare::kc_sqr#2 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:100::print_byte:64::print_char:72 [ char_cursor#11 ] ) + to:@return +asm_multiply: scope:[asm_multiply] from mul_results_compare::@8 + [78] *((const byte*) asm_multiply::memA#0) ← (byte) asm_multiply::a#0 [ asm_multiply::b#0 ] ( main:2::mul_results_compare:13::asm_multiply:25 [ mul_results_compare::a#5 mul_results_compare::b#2 mul_results_compare::ms#0 line_cursor#17 char_cursor#20 asm_multiply::b#0 ] ) + [79] *((const byte*) asm_multiply::memB#0) ← (byte) asm_multiply::b#0 [ ] ( main:2::mul_results_compare:13::asm_multiply:25 [ mul_results_compare::a#5 mul_results_compare::b#2 mul_results_compare::ms#0 line_cursor#17 char_cursor#20 ] ) + asm { ldamemAstasm1+1stasm3+1eor#$ffstasm2+1stasm4+1ldxmemBsecsm1:ldaasm_mul_sqr1_lo,xsm2:sbcasm_mul_sqr2_lo,xstamemAsm3:ldaasm_mul_sqr1_hi,xsm4:sbcasm_mul_sqr2_hi,xstamemB } + [81] (word) asm_multiply::return#0 ← *((const byte*) asm_multiply::memB#0) w= *((const byte*) asm_multiply::memA#0) [ asm_multiply::return#0 ] ( main:2::mul_results_compare:13::asm_multiply:25 [ mul_results_compare::a#5 mul_results_compare::b#2 mul_results_compare::ms#0 line_cursor#17 char_cursor#20 asm_multiply::return#0 ] ) + to:asm_multiply::@return +asm_multiply::@return: scope:[asm_multiply] from asm_multiply + [82] return [ asm_multiply::return#0 ] ( main:2::mul_results_compare:13::asm_multiply:25 [ mul_results_compare::a#5 mul_results_compare::b#2 mul_results_compare::ms#0 line_cursor#17 char_cursor#20 asm_multiply::return#0 ] ) + to:@return +slow_multiply: scope:[slow_multiply] from mul_results_compare::@2 + [83] if((byte) slow_multiply::a#0<=(byte/signed byte/word/signed word) 0) goto slow_multiply::@1 [ slow_multiply::a#0 slow_multiply::b#0 ] ( main:2::mul_results_compare:13::slow_multiply:20 [ mul_results_compare::a#5 mul_results_compare::b#2 line_cursor#17 char_cursor#20 slow_multiply::a#0 slow_multiply::b#0 ] ) + to:slow_multiply::@2 +slow_multiply::@2: scope:[slow_multiply] from slow_multiply slow_multiply::@2 + [84] (byte) slow_multiply::i#2 ← phi( slow_multiply::@2/(byte) slow_multiply::i#1 slow_multiply/(byte/signed byte/word/signed word) 0 ) [ slow_multiply::a#0 slow_multiply::b#0 slow_multiply::m#3 slow_multiply::i#2 ] ( main:2::mul_results_compare:13::slow_multiply:20 [ mul_results_compare::a#5 mul_results_compare::b#2 line_cursor#17 char_cursor#20 slow_multiply::a#0 slow_multiply::b#0 slow_multiply::m#3 slow_multiply::i#2 ] ) + [84] (word) slow_multiply::m#3 ← phi( slow_multiply::@2/(word) slow_multiply::m#1 slow_multiply/(byte/signed byte/word/signed word) 0 ) [ slow_multiply::a#0 slow_multiply::b#0 slow_multiply::m#3 slow_multiply::i#2 ] ( main:2::mul_results_compare:13::slow_multiply:20 [ mul_results_compare::a#5 mul_results_compare::b#2 line_cursor#17 char_cursor#20 slow_multiply::a#0 slow_multiply::b#0 slow_multiply::m#3 slow_multiply::i#2 ] ) + [85] (word) slow_multiply::m#1 ← (word) slow_multiply::m#3 + (byte) slow_multiply::b#0 [ slow_multiply::a#0 slow_multiply::b#0 slow_multiply::i#2 slow_multiply::m#1 ] ( main:2::mul_results_compare:13::slow_multiply:20 [ mul_results_compare::a#5 mul_results_compare::b#2 line_cursor#17 char_cursor#20 slow_multiply::a#0 slow_multiply::b#0 slow_multiply::i#2 slow_multiply::m#1 ] ) + [86] (byte) slow_multiply::i#1 ← ++ (byte) slow_multiply::i#2 [ slow_multiply::a#0 slow_multiply::b#0 slow_multiply::m#1 slow_multiply::i#1 ] ( main:2::mul_results_compare:13::slow_multiply:20 [ mul_results_compare::a#5 mul_results_compare::b#2 line_cursor#17 char_cursor#20 slow_multiply::a#0 slow_multiply::b#0 slow_multiply::m#1 slow_multiply::i#1 ] ) + [87] if((byte) slow_multiply::i#1!=(byte) slow_multiply::a#0) goto slow_multiply::@2 [ slow_multiply::a#0 slow_multiply::b#0 slow_multiply::m#1 slow_multiply::i#1 ] ( main:2::mul_results_compare:13::slow_multiply:20 [ mul_results_compare::a#5 mul_results_compare::b#2 line_cursor#17 char_cursor#20 slow_multiply::a#0 slow_multiply::b#0 slow_multiply::m#1 slow_multiply::i#1 ] ) + to:slow_multiply::@1 +slow_multiply::@1: scope:[slow_multiply] from slow_multiply slow_multiply::@2 + [88] (word) slow_multiply::return#0 ← phi( slow_multiply/(byte/signed byte/word/signed word) 0 slow_multiply::@2/(word) slow_multiply::m#1 ) [ slow_multiply::return#0 ] ( main:2::mul_results_compare:13::slow_multiply:20 [ mul_results_compare::a#5 mul_results_compare::b#2 line_cursor#17 char_cursor#20 slow_multiply::return#0 ] ) + to:slow_multiply::@return +slow_multiply::@return: scope:[slow_multiply] from slow_multiply::@1 + [89] return [ slow_multiply::return#0 ] ( main:2::mul_results_compare:13::slow_multiply:20 [ mul_results_compare::a#5 mul_results_compare::b#2 line_cursor#17 char_cursor#20 slow_multiply::return#0 ] ) + to:@return +mul_tables_compare: scope:[mul_tables_compare] from main::@3 + [90] phi() [ ] ( main:2::mul_tables_compare:11 [ ] ) + to:mul_tables_compare::@1 +mul_tables_compare::@1: scope:[mul_tables_compare] from mul_tables_compare mul_tables_compare::@2 + [91] (byte*) mul_tables_compare::asm_sqr#2 ← phi( mul_tables_compare/(const byte[512]) asm_mul_sqr1_lo#0 mul_tables_compare::@2/(byte*) mul_tables_compare::asm_sqr#1 ) [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 ] ( main:2::mul_tables_compare:11 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 ] ) + [91] (byte*) mul_tables_compare::kc_sqr#2 ← phi( mul_tables_compare/(const byte[512]) mul_sqr1_lo#0 mul_tables_compare::@2/(byte*) mul_tables_compare::kc_sqr#1 ) [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 ] ( main:2::mul_tables_compare:11 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 ] ) + [92] if(*((byte*) mul_tables_compare::kc_sqr#2)==*((byte*) mul_tables_compare::asm_sqr#2)) goto mul_tables_compare::@2 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 ] ( main:2::mul_tables_compare:11 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 ] ) + to:mul_tables_compare::@3 +mul_tables_compare::@3: scope:[mul_tables_compare] from mul_tables_compare::@1 + [93] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 2 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 ] ( main:2::mul_tables_compare:11 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 ] ) + [94] call print_str param-assignment [ char_cursor#2 mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 ] ( main:2::mul_tables_compare:11 [ char_cursor#2 mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 ] ) + to:mul_tables_compare::@6 +mul_tables_compare::@6: scope:[mul_tables_compare] from mul_tables_compare::@3 + [95] (word) print_word::w#0 ← ((word)) (byte*) mul_tables_compare::asm_sqr#2 [ char_cursor#2 print_word::w#0 mul_tables_compare::kc_sqr#2 ] ( main:2::mul_tables_compare:11 [ char_cursor#2 print_word::w#0 mul_tables_compare::kc_sqr#2 ] ) + [96] call print_word param-assignment [ char_cursor#11 mul_tables_compare::kc_sqr#2 ] ( main:2::mul_tables_compare:11 [ char_cursor#11 mul_tables_compare::kc_sqr#2 ] ) + to:mul_tables_compare::@7 +mul_tables_compare::@7: scope:[mul_tables_compare] from mul_tables_compare::@6 + [97] phi() [ char_cursor#11 mul_tables_compare::kc_sqr#2 ] ( main:2::mul_tables_compare:11 [ char_cursor#11 mul_tables_compare::kc_sqr#2 ] ) + [98] call print_str param-assignment [ char_cursor#2 mul_tables_compare::kc_sqr#2 ] ( main:2::mul_tables_compare:11 [ char_cursor#2 mul_tables_compare::kc_sqr#2 ] ) + to:mul_tables_compare::@8 +mul_tables_compare::@8: scope:[mul_tables_compare] from mul_tables_compare::@7 + [99] (word) print_word::w#1 ← ((word)) (byte*) mul_tables_compare::kc_sqr#2 [ char_cursor#2 print_word::w#1 ] ( main:2::mul_tables_compare:11 [ char_cursor#2 print_word::w#1 ] ) + [100] call print_word param-assignment [ char_cursor#11 ] ( main:2::mul_tables_compare:11 [ char_cursor#11 ] ) + to:mul_tables_compare::@return +mul_tables_compare::@return: scope:[mul_tables_compare] from mul_tables_compare::@10 mul_tables_compare::@8 + [101] (byte*) line_cursor#17 ← phi( mul_tables_compare::@10/(byte*) line_cursor#1 mul_tables_compare::@8/((byte*))(word/signed word) 1024 ) [ line_cursor#17 char_cursor#20 ] ( main:2::mul_tables_compare:11 [ line_cursor#17 char_cursor#20 ] ) + [101] (byte*) char_cursor#20 ← phi( mul_tables_compare::@10/(byte*~) char_cursor#100 mul_tables_compare::@8/(byte*) char_cursor#11 ) [ line_cursor#17 char_cursor#20 ] ( main:2::mul_tables_compare:11 [ line_cursor#17 char_cursor#20 ] ) + [102] return [ line_cursor#17 char_cursor#20 ] ( main:2::mul_tables_compare:11 [ line_cursor#17 char_cursor#20 ] ) + to:@return +mul_tables_compare::@2: scope:[mul_tables_compare] from mul_tables_compare::@1 + [103] (byte*) mul_tables_compare::asm_sqr#1 ← ++ (byte*) mul_tables_compare::asm_sqr#2 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#1 ] ( main:2::mul_tables_compare:11 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#1 ] ) + [104] (byte*) mul_tables_compare::kc_sqr#1 ← ++ (byte*) mul_tables_compare::kc_sqr#2 [ mul_tables_compare::kc_sqr#1 mul_tables_compare::asm_sqr#1 ] ( main:2::mul_tables_compare:11 [ mul_tables_compare::kc_sqr#1 mul_tables_compare::asm_sqr#1 ] ) + [105] if((byte*) mul_tables_compare::kc_sqr#1<(const byte[512]) mul_sqr1_lo#0+(word/signed word) 512*(byte/signed byte/word/signed word) 4) goto mul_tables_compare::@1 [ mul_tables_compare::kc_sqr#1 mul_tables_compare::asm_sqr#1 ] ( main:2::mul_tables_compare:11 [ mul_tables_compare::kc_sqr#1 mul_tables_compare::asm_sqr#1 ] ) + to:mul_tables_compare::@5 +mul_tables_compare::@5: scope:[mul_tables_compare] from mul_tables_compare::@2 + [106] phi() [ ] ( main:2::mul_tables_compare:11 [ ] ) + [107] call print_str param-assignment [ char_cursor#2 ] ( main:2::mul_tables_compare:11 [ char_cursor#2 ] ) + to:mul_tables_compare::@10 +mul_tables_compare::@10: scope:[mul_tables_compare] from mul_tables_compare::@5 + [108] phi() [ char_cursor#2 ] ( main:2::mul_tables_compare:11 [ char_cursor#2 ] ) + [109] call print_ln param-assignment [ line_cursor#1 ] ( main:2::mul_tables_compare:11 [ line_cursor#1 ] ) + [110] (byte*~) char_cursor#100 ← (byte*) line_cursor#1 [ line_cursor#1 char_cursor#100 ] ( main:2::mul_tables_compare:11 [ line_cursor#1 char_cursor#100 ] ) + to:mul_tables_compare::@return +init_mul_tables_asm: scope:[init_mul_tables_asm] from main::@2 asm { ldx#$00txa.byte$c9lb1:tyaadc#$00ml1:staasm_mul_sqr1_hi,xtaycmp#$40txarorml9:adc#$00staml9+1inxml0:staasm_mul_sqr1_lo,xbnelb1incml0+2incml1+2clcinybnelb1ldx#$00ldy#$ff!:ldaasm_mul_sqr1_hi+1,xstaasm_mul_sqr2_hi+$100,xldaasm_mul_sqr1_hi,xstaasm_mul_sqr2_hi,yldaasm_mul_sqr1_lo+1,xstaasm_mul_sqr2_lo+$100,xldaasm_mul_sqr1_lo,xstaasm_mul_sqr2_lo,ydeyinxbne!- } - [61] *((const byte*) init_mul_tables_asm::mem#0) ← *((const byte[512]) asm_mul_sqr1_lo#0) [ ] ( main:2::init_mul_tables_asm:7 [ ] ) - [62] *((const byte*) init_mul_tables_asm::mem#0) ← *((const byte[512]) asm_mul_sqr1_hi#0) [ ] ( main:2::init_mul_tables_asm:7 [ ] ) - [63] *((const byte*) init_mul_tables_asm::mem#0) ← *((const byte[512]) asm_mul_sqr2_lo#0) [ ] ( main:2::init_mul_tables_asm:7 [ ] ) - [64] *((const byte*) init_mul_tables_asm::mem#0) ← *((const byte[512]) asm_mul_sqr2_hi#0) [ ] ( main:2::init_mul_tables_asm:7 [ ] ) + [112] *((const byte*) init_mul_tables_asm::mem#0) ← *((const byte[512]) asm_mul_sqr1_lo#0) [ ] ( main:2::init_mul_tables_asm:9 [ ] ) + [113] *((const byte*) init_mul_tables_asm::mem#0) ← *((const byte[512]) asm_mul_sqr1_hi#0) [ ] ( main:2::init_mul_tables_asm:9 [ ] ) + [114] *((const byte*) init_mul_tables_asm::mem#0) ← *((const byte[512]) asm_mul_sqr2_lo#0) [ ] ( main:2::init_mul_tables_asm:9 [ ] ) + [115] *((const byte*) init_mul_tables_asm::mem#0) ← *((const byte[512]) asm_mul_sqr2_hi#0) [ ] ( main:2::init_mul_tables_asm:9 [ ] ) to:init_mul_tables_asm::@return init_mul_tables_asm::@return: scope:[init_mul_tables_asm] from init_mul_tables_asm - [65] return [ ] ( main:2::init_mul_tables_asm:7 [ ] ) + [116] return [ ] ( main:2::init_mul_tables_asm:9 [ ] ) to:@return -init_mul_tables: scope:[init_mul_tables] from main - [66] phi() [ ] ( main:2::init_mul_tables:5 [ ] ) +init_mul_tables: scope:[init_mul_tables] from main::@1 + [117] phi() [ ] ( main:2::init_mul_tables:7 [ ] ) to:init_mul_tables::@1 init_mul_tables::@1: scope:[init_mul_tables] from init_mul_tables init_mul_tables::@2 - [67] (byte) init_mul_tables::x_2#3 ← phi( init_mul_tables/(byte/signed byte/word/signed word) 0 init_mul_tables::@2/(byte) init_mul_tables::x_2#2 ) [ init_mul_tables::c#2 init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::x_2#3 ] ( main:2::init_mul_tables:5 [ init_mul_tables::c#2 init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::x_2#3 ] ) - [67] (byte*) init_mul_tables::sqr1_hi#2 ← phi( init_mul_tables/(const byte[512]) mul_sqr1_hi#0+(byte/signed byte/word/signed word) 1 init_mul_tables::@2/(byte*) init_mul_tables::sqr1_hi#1 ) [ init_mul_tables::c#2 init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::x_2#3 ] ( main:2::init_mul_tables:5 [ init_mul_tables::c#2 init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::x_2#3 ] ) - [67] (byte*) init_mul_tables::sqr1_lo#2 ← phi( init_mul_tables/(const byte[512]) mul_sqr1_lo#0+(byte/signed byte/word/signed word) 1 init_mul_tables::@2/(byte*) init_mul_tables::sqr1_lo#1 ) [ init_mul_tables::c#2 init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::x_2#3 ] ( main:2::init_mul_tables:5 [ init_mul_tables::c#2 init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::x_2#3 ] ) - [67] (word) init_mul_tables::sqr#4 ← phi( init_mul_tables/(byte/signed byte/word/signed word) 0 init_mul_tables::@2/(word) init_mul_tables::sqr#1 ) [ init_mul_tables::c#2 init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::x_2#3 ] ( main:2::init_mul_tables:5 [ init_mul_tables::c#2 init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::x_2#3 ] ) - [67] (byte) init_mul_tables::c#2 ← phi( init_mul_tables/(byte/signed byte/word/signed word) 0 init_mul_tables::@2/(byte) init_mul_tables::c#1 ) [ init_mul_tables::c#2 init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::x_2#3 ] ( main:2::init_mul_tables:5 [ init_mul_tables::c#2 init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::x_2#3 ] ) - [68] (byte) init_mul_tables::c#1 ← ++ (byte) init_mul_tables::c#2 [ init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::x_2#3 init_mul_tables::c#1 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::x_2#3 init_mul_tables::c#1 ] ) - [69] (byte~) init_mul_tables::$2 ← (byte) init_mul_tables::c#1 & (byte/signed byte/word/signed word) 1 [ init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::x_2#3 init_mul_tables::c#1 init_mul_tables::$2 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::x_2#3 init_mul_tables::c#1 init_mul_tables::$2 ] ) - [70] if((byte~) init_mul_tables::$2!=(byte/signed byte/word/signed word) 0) goto init_mul_tables::@2 [ init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::x_2#3 init_mul_tables::c#1 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::x_2#3 init_mul_tables::c#1 ] ) + [118] (byte) init_mul_tables::x_2#3 ← phi( init_mul_tables/(byte/signed byte/word/signed word) 0 init_mul_tables::@2/(byte) init_mul_tables::x_2#2 ) [ init_mul_tables::c#2 init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::x_2#3 ] ( main:2::init_mul_tables:7 [ init_mul_tables::c#2 init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::x_2#3 ] ) + [118] (byte*) init_mul_tables::sqr1_hi#2 ← phi( init_mul_tables/(const byte[512]) mul_sqr1_hi#0+(byte/signed byte/word/signed word) 1 init_mul_tables::@2/(byte*) init_mul_tables::sqr1_hi#1 ) [ init_mul_tables::c#2 init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::x_2#3 ] ( main:2::init_mul_tables:7 [ init_mul_tables::c#2 init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::x_2#3 ] ) + [118] (byte*) init_mul_tables::sqr1_lo#2 ← phi( init_mul_tables/(const byte[512]) mul_sqr1_lo#0+(byte/signed byte/word/signed word) 1 init_mul_tables::@2/(byte*) init_mul_tables::sqr1_lo#1 ) [ init_mul_tables::c#2 init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::x_2#3 ] ( main:2::init_mul_tables:7 [ init_mul_tables::c#2 init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::x_2#3 ] ) + [118] (word) init_mul_tables::sqr#4 ← phi( init_mul_tables/(byte/signed byte/word/signed word) 0 init_mul_tables::@2/(word) init_mul_tables::sqr#1 ) [ init_mul_tables::c#2 init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::x_2#3 ] ( main:2::init_mul_tables:7 [ init_mul_tables::c#2 init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::x_2#3 ] ) + [118] (byte) init_mul_tables::c#2 ← phi( init_mul_tables/(byte/signed byte/word/signed word) 0 init_mul_tables::@2/(byte) init_mul_tables::c#1 ) [ init_mul_tables::c#2 init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::x_2#3 ] ( main:2::init_mul_tables:7 [ init_mul_tables::c#2 init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::x_2#3 ] ) + [119] (byte) init_mul_tables::c#1 ← ++ (byte) init_mul_tables::c#2 [ init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::x_2#3 init_mul_tables::c#1 ] ( main:2::init_mul_tables:7 [ init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::x_2#3 init_mul_tables::c#1 ] ) + [120] (byte~) init_mul_tables::$2 ← (byte) init_mul_tables::c#1 & (byte/signed byte/word/signed word) 1 [ init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::x_2#3 init_mul_tables::c#1 init_mul_tables::$2 ] ( main:2::init_mul_tables:7 [ init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::x_2#3 init_mul_tables::c#1 init_mul_tables::$2 ] ) + [121] if((byte~) init_mul_tables::$2!=(byte/signed byte/word/signed word) 0) goto init_mul_tables::@2 [ init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::x_2#3 init_mul_tables::c#1 ] ( main:2::init_mul_tables:7 [ init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::x_2#3 init_mul_tables::c#1 ] ) to:init_mul_tables::@5 init_mul_tables::@5: scope:[init_mul_tables] from init_mul_tables::@1 - [71] (byte) init_mul_tables::x_2#1 ← ++ (byte) init_mul_tables::x_2#3 [ init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#1 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#1 ] ) - [72] (word) init_mul_tables::sqr#2 ← ++ (word) init_mul_tables::sqr#4 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#1 init_mul_tables::sqr#2 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#1 init_mul_tables::sqr#2 ] ) + [122] (byte) init_mul_tables::x_2#1 ← ++ (byte) init_mul_tables::x_2#3 [ init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#1 ] ( main:2::init_mul_tables:7 [ init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#1 ] ) + [123] (word) init_mul_tables::sqr#2 ← ++ (word) init_mul_tables::sqr#4 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#1 init_mul_tables::sqr#2 ] ( main:2::init_mul_tables:7 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#1 init_mul_tables::sqr#2 ] ) to:init_mul_tables::@2 init_mul_tables::@2: scope:[init_mul_tables] from init_mul_tables::@1 init_mul_tables::@5 - [73] (byte) init_mul_tables::x_2#2 ← phi( init_mul_tables::@1/(byte) init_mul_tables::x_2#3 init_mul_tables::@5/(byte) init_mul_tables::x_2#1 ) [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 ] ) - [73] (word) init_mul_tables::sqr#3 ← phi( init_mul_tables::@1/(word) init_mul_tables::sqr#4 init_mul_tables::@5/(word) init_mul_tables::sqr#2 ) [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 ] ) - [74] (byte~) init_mul_tables::$5 ← < (word) init_mul_tables::sqr#3 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 init_mul_tables::$5 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 init_mul_tables::$5 ] ) - [75] *((byte*) init_mul_tables::sqr1_lo#2) ← (byte~) init_mul_tables::$5 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 ] ) - [76] (byte~) init_mul_tables::$6 ← > (word) init_mul_tables::sqr#3 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 init_mul_tables::$6 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 init_mul_tables::$6 ] ) - [77] *((byte*) init_mul_tables::sqr1_hi#2) ← (byte~) init_mul_tables::$6 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 ] ) - [78] (byte*) init_mul_tables::sqr1_hi#1 ← ++ (byte*) init_mul_tables::sqr1_hi#2 [ init_mul_tables::sqr1_lo#2 init_mul_tables::c#1 init_mul_tables::sqr1_hi#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr1_lo#2 init_mul_tables::c#1 init_mul_tables::sqr1_hi#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 ] ) - [79] (word) init_mul_tables::sqr#1 ← (word) init_mul_tables::sqr#3 + (byte) init_mul_tables::x_2#2 [ init_mul_tables::sqr1_lo#2 init_mul_tables::c#1 init_mul_tables::sqr#1 init_mul_tables::sqr1_hi#1 init_mul_tables::x_2#2 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr1_lo#2 init_mul_tables::c#1 init_mul_tables::sqr#1 init_mul_tables::sqr1_hi#1 init_mul_tables::x_2#2 ] ) - [80] (byte*) init_mul_tables::sqr1_lo#1 ← ++ (byte*) init_mul_tables::sqr1_lo#2 [ init_mul_tables::c#1 init_mul_tables::sqr#1 init_mul_tables::sqr1_lo#1 init_mul_tables::sqr1_hi#1 init_mul_tables::x_2#2 ] ( main:2::init_mul_tables:5 [ init_mul_tables::c#1 init_mul_tables::sqr#1 init_mul_tables::sqr1_lo#1 init_mul_tables::sqr1_hi#1 init_mul_tables::x_2#2 ] ) - [81] if((byte*) init_mul_tables::sqr1_lo#1!=(const byte[512]) mul_sqr1_lo#0+(word/signed word) 512) goto init_mul_tables::@1 [ init_mul_tables::c#1 init_mul_tables::sqr#1 init_mul_tables::sqr1_lo#1 init_mul_tables::sqr1_hi#1 init_mul_tables::x_2#2 ] ( main:2::init_mul_tables:5 [ init_mul_tables::c#1 init_mul_tables::sqr#1 init_mul_tables::sqr1_lo#1 init_mul_tables::sqr1_hi#1 init_mul_tables::x_2#2 ] ) + [124] (byte) init_mul_tables::x_2#2 ← phi( init_mul_tables::@1/(byte) init_mul_tables::x_2#3 init_mul_tables::@5/(byte) init_mul_tables::x_2#1 ) [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 ] ( main:2::init_mul_tables:7 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 ] ) + [124] (word) init_mul_tables::sqr#3 ← phi( init_mul_tables::@1/(word) init_mul_tables::sqr#4 init_mul_tables::@5/(word) init_mul_tables::sqr#2 ) [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 ] ( main:2::init_mul_tables:7 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 ] ) + [125] (byte~) init_mul_tables::$5 ← < (word) init_mul_tables::sqr#3 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 init_mul_tables::$5 ] ( main:2::init_mul_tables:7 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 init_mul_tables::$5 ] ) + [126] *((byte*) init_mul_tables::sqr1_lo#2) ← (byte~) init_mul_tables::$5 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 ] ( main:2::init_mul_tables:7 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 ] ) + [127] (byte~) init_mul_tables::$6 ← > (word) init_mul_tables::sqr#3 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 init_mul_tables::$6 ] ( main:2::init_mul_tables:7 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 init_mul_tables::$6 ] ) + [128] *((byte*) init_mul_tables::sqr1_hi#2) ← (byte~) init_mul_tables::$6 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 ] ( main:2::init_mul_tables:7 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 ] ) + [129] (byte*) init_mul_tables::sqr1_hi#1 ← ++ (byte*) init_mul_tables::sqr1_hi#2 [ init_mul_tables::sqr1_lo#2 init_mul_tables::c#1 init_mul_tables::sqr1_hi#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 ] ( main:2::init_mul_tables:7 [ init_mul_tables::sqr1_lo#2 init_mul_tables::c#1 init_mul_tables::sqr1_hi#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 ] ) + [130] (word) init_mul_tables::sqr#1 ← (word) init_mul_tables::sqr#3 + (byte) init_mul_tables::x_2#2 [ init_mul_tables::sqr1_lo#2 init_mul_tables::c#1 init_mul_tables::sqr#1 init_mul_tables::sqr1_hi#1 init_mul_tables::x_2#2 ] ( main:2::init_mul_tables:7 [ init_mul_tables::sqr1_lo#2 init_mul_tables::c#1 init_mul_tables::sqr#1 init_mul_tables::sqr1_hi#1 init_mul_tables::x_2#2 ] ) + [131] (byte*) init_mul_tables::sqr1_lo#1 ← ++ (byte*) init_mul_tables::sqr1_lo#2 [ init_mul_tables::c#1 init_mul_tables::sqr#1 init_mul_tables::sqr1_lo#1 init_mul_tables::sqr1_hi#1 init_mul_tables::x_2#2 ] ( main:2::init_mul_tables:7 [ init_mul_tables::c#1 init_mul_tables::sqr#1 init_mul_tables::sqr1_lo#1 init_mul_tables::sqr1_hi#1 init_mul_tables::x_2#2 ] ) + [132] if((byte*) init_mul_tables::sqr1_lo#1!=(const byte[512]) mul_sqr1_lo#0+(word/signed word) 512) goto init_mul_tables::@1 [ init_mul_tables::c#1 init_mul_tables::sqr#1 init_mul_tables::sqr1_lo#1 init_mul_tables::sqr1_hi#1 init_mul_tables::x_2#2 ] ( main:2::init_mul_tables:7 [ init_mul_tables::c#1 init_mul_tables::sqr#1 init_mul_tables::sqr1_lo#1 init_mul_tables::sqr1_hi#1 init_mul_tables::x_2#2 ] ) to:init_mul_tables::@3 init_mul_tables::@3: scope:[init_mul_tables] from init_mul_tables::@2 init_mul_tables::@4 - [82] (byte) init_mul_tables::dir#2 ← phi( init_mul_tables::@4/(byte) init_mul_tables::dir#3 init_mul_tables::@2/(byte/word/signed word) 255 ) [ init_mul_tables::x_255#2 init_mul_tables::sqr2_lo#2 init_mul_tables::sqr2_hi#2 init_mul_tables::dir#2 ] ( main:2::init_mul_tables:5 [ init_mul_tables::x_255#2 init_mul_tables::sqr2_lo#2 init_mul_tables::sqr2_hi#2 init_mul_tables::dir#2 ] ) - [82] (byte*) init_mul_tables::sqr2_hi#2 ← phi( init_mul_tables::@4/(byte*) init_mul_tables::sqr2_hi#1 init_mul_tables::@2/(const byte[512]) mul_sqr2_hi#0 ) [ init_mul_tables::x_255#2 init_mul_tables::sqr2_lo#2 init_mul_tables::sqr2_hi#2 init_mul_tables::dir#2 ] ( main:2::init_mul_tables:5 [ init_mul_tables::x_255#2 init_mul_tables::sqr2_lo#2 init_mul_tables::sqr2_hi#2 init_mul_tables::dir#2 ] ) - [82] (byte*) init_mul_tables::sqr2_lo#2 ← phi( init_mul_tables::@4/(byte*) init_mul_tables::sqr2_lo#1 init_mul_tables::@2/(const byte[512]) mul_sqr2_lo#0 ) [ init_mul_tables::x_255#2 init_mul_tables::sqr2_lo#2 init_mul_tables::sqr2_hi#2 init_mul_tables::dir#2 ] ( main:2::init_mul_tables:5 [ init_mul_tables::x_255#2 init_mul_tables::sqr2_lo#2 init_mul_tables::sqr2_hi#2 init_mul_tables::dir#2 ] ) - [82] (byte) init_mul_tables::x_255#2 ← phi( init_mul_tables::@4/(byte) init_mul_tables::x_255#1 init_mul_tables::@2/((byte))-(byte/signed byte/word/signed word) 1 ) [ init_mul_tables::x_255#2 init_mul_tables::sqr2_lo#2 init_mul_tables::sqr2_hi#2 init_mul_tables::dir#2 ] ( main:2::init_mul_tables:5 [ init_mul_tables::x_255#2 init_mul_tables::sqr2_lo#2 init_mul_tables::sqr2_hi#2 init_mul_tables::dir#2 ] ) - [83] *((byte*) init_mul_tables::sqr2_lo#2) ← *((const byte[512]) mul_sqr1_lo#0 + (byte) init_mul_tables::x_255#2) [ init_mul_tables::x_255#2 init_mul_tables::sqr2_lo#2 init_mul_tables::sqr2_hi#2 init_mul_tables::dir#2 ] ( main:2::init_mul_tables:5 [ init_mul_tables::x_255#2 init_mul_tables::sqr2_lo#2 init_mul_tables::sqr2_hi#2 init_mul_tables::dir#2 ] ) - [84] *((byte*) init_mul_tables::sqr2_hi#2) ← *((const byte[512]) mul_sqr1_hi#0 + (byte) init_mul_tables::x_255#2) [ init_mul_tables::x_255#2 init_mul_tables::sqr2_lo#2 init_mul_tables::sqr2_hi#2 init_mul_tables::dir#2 ] ( main:2::init_mul_tables:5 [ init_mul_tables::x_255#2 init_mul_tables::sqr2_lo#2 init_mul_tables::sqr2_hi#2 init_mul_tables::dir#2 ] ) - [85] (byte*) init_mul_tables::sqr2_hi#1 ← ++ (byte*) init_mul_tables::sqr2_hi#2 [ init_mul_tables::x_255#2 init_mul_tables::sqr2_lo#2 init_mul_tables::dir#2 init_mul_tables::sqr2_hi#1 ] ( main:2::init_mul_tables:5 [ init_mul_tables::x_255#2 init_mul_tables::sqr2_lo#2 init_mul_tables::dir#2 init_mul_tables::sqr2_hi#1 ] ) - [86] (byte) init_mul_tables::x_255#1 ← (byte) init_mul_tables::x_255#2 + (byte) init_mul_tables::dir#2 [ init_mul_tables::sqr2_lo#2 init_mul_tables::dir#2 init_mul_tables::x_255#1 init_mul_tables::sqr2_hi#1 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr2_lo#2 init_mul_tables::dir#2 init_mul_tables::x_255#1 init_mul_tables::sqr2_hi#1 ] ) - [87] if((byte) init_mul_tables::x_255#1!=(byte/signed byte/word/signed word) 0) goto init_mul_tables::@12 [ init_mul_tables::sqr2_lo#2 init_mul_tables::dir#2 init_mul_tables::x_255#1 init_mul_tables::sqr2_hi#1 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr2_lo#2 init_mul_tables::dir#2 init_mul_tables::x_255#1 init_mul_tables::sqr2_hi#1 ] ) + [133] (byte) init_mul_tables::dir#2 ← phi( init_mul_tables::@4/(byte) init_mul_tables::dir#3 init_mul_tables::@2/(byte/word/signed word) 255 ) [ init_mul_tables::x_255#2 init_mul_tables::sqr2_lo#2 init_mul_tables::sqr2_hi#2 init_mul_tables::dir#2 ] ( main:2::init_mul_tables:7 [ init_mul_tables::x_255#2 init_mul_tables::sqr2_lo#2 init_mul_tables::sqr2_hi#2 init_mul_tables::dir#2 ] ) + [133] (byte*) init_mul_tables::sqr2_hi#2 ← phi( init_mul_tables::@4/(byte*) init_mul_tables::sqr2_hi#1 init_mul_tables::@2/(const byte[512]) mul_sqr2_hi#0 ) [ init_mul_tables::x_255#2 init_mul_tables::sqr2_lo#2 init_mul_tables::sqr2_hi#2 init_mul_tables::dir#2 ] ( main:2::init_mul_tables:7 [ init_mul_tables::x_255#2 init_mul_tables::sqr2_lo#2 init_mul_tables::sqr2_hi#2 init_mul_tables::dir#2 ] ) + [133] (byte*) init_mul_tables::sqr2_lo#2 ← phi( init_mul_tables::@4/(byte*) init_mul_tables::sqr2_lo#1 init_mul_tables::@2/(const byte[512]) mul_sqr2_lo#0 ) [ init_mul_tables::x_255#2 init_mul_tables::sqr2_lo#2 init_mul_tables::sqr2_hi#2 init_mul_tables::dir#2 ] ( main:2::init_mul_tables:7 [ init_mul_tables::x_255#2 init_mul_tables::sqr2_lo#2 init_mul_tables::sqr2_hi#2 init_mul_tables::dir#2 ] ) + [133] (byte) init_mul_tables::x_255#2 ← phi( init_mul_tables::@4/(byte) init_mul_tables::x_255#1 init_mul_tables::@2/((byte))-(byte/signed byte/word/signed word) 1 ) [ init_mul_tables::x_255#2 init_mul_tables::sqr2_lo#2 init_mul_tables::sqr2_hi#2 init_mul_tables::dir#2 ] ( main:2::init_mul_tables:7 [ init_mul_tables::x_255#2 init_mul_tables::sqr2_lo#2 init_mul_tables::sqr2_hi#2 init_mul_tables::dir#2 ] ) + [134] *((byte*) init_mul_tables::sqr2_lo#2) ← *((const byte[512]) mul_sqr1_lo#0 + (byte) init_mul_tables::x_255#2) [ init_mul_tables::x_255#2 init_mul_tables::sqr2_lo#2 init_mul_tables::sqr2_hi#2 init_mul_tables::dir#2 ] ( main:2::init_mul_tables:7 [ init_mul_tables::x_255#2 init_mul_tables::sqr2_lo#2 init_mul_tables::sqr2_hi#2 init_mul_tables::dir#2 ] ) + [135] *((byte*) init_mul_tables::sqr2_hi#2) ← *((const byte[512]) mul_sqr1_hi#0 + (byte) init_mul_tables::x_255#2) [ init_mul_tables::x_255#2 init_mul_tables::sqr2_lo#2 init_mul_tables::sqr2_hi#2 init_mul_tables::dir#2 ] ( main:2::init_mul_tables:7 [ init_mul_tables::x_255#2 init_mul_tables::sqr2_lo#2 init_mul_tables::sqr2_hi#2 init_mul_tables::dir#2 ] ) + [136] (byte*) init_mul_tables::sqr2_hi#1 ← ++ (byte*) init_mul_tables::sqr2_hi#2 [ init_mul_tables::x_255#2 init_mul_tables::sqr2_lo#2 init_mul_tables::dir#2 init_mul_tables::sqr2_hi#1 ] ( main:2::init_mul_tables:7 [ init_mul_tables::x_255#2 init_mul_tables::sqr2_lo#2 init_mul_tables::dir#2 init_mul_tables::sqr2_hi#1 ] ) + [137] (byte) init_mul_tables::x_255#1 ← (byte) init_mul_tables::x_255#2 + (byte) init_mul_tables::dir#2 [ init_mul_tables::sqr2_lo#2 init_mul_tables::dir#2 init_mul_tables::x_255#1 init_mul_tables::sqr2_hi#1 ] ( main:2::init_mul_tables:7 [ init_mul_tables::sqr2_lo#2 init_mul_tables::dir#2 init_mul_tables::x_255#1 init_mul_tables::sqr2_hi#1 ] ) + [138] if((byte) init_mul_tables::x_255#1!=(byte/signed byte/word/signed word) 0) goto init_mul_tables::@12 [ init_mul_tables::sqr2_lo#2 init_mul_tables::dir#2 init_mul_tables::x_255#1 init_mul_tables::sqr2_hi#1 ] ( main:2::init_mul_tables:7 [ init_mul_tables::sqr2_lo#2 init_mul_tables::dir#2 init_mul_tables::x_255#1 init_mul_tables::sqr2_hi#1 ] ) to:init_mul_tables::@4 init_mul_tables::@4: scope:[init_mul_tables] from init_mul_tables::@12 init_mul_tables::@3 - [88] (byte) init_mul_tables::dir#3 ← phi( init_mul_tables::@12/(byte) init_mul_tables::dir#2 init_mul_tables::@3/(byte/signed byte/word/signed word) 1 ) [ init_mul_tables::sqr2_lo#2 init_mul_tables::x_255#1 init_mul_tables::sqr2_hi#1 init_mul_tables::dir#3 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr2_lo#2 init_mul_tables::x_255#1 init_mul_tables::sqr2_hi#1 init_mul_tables::dir#3 ] ) - [89] (byte*) init_mul_tables::sqr2_lo#1 ← ++ (byte*) init_mul_tables::sqr2_lo#2 [ init_mul_tables::x_255#1 init_mul_tables::sqr2_lo#1 init_mul_tables::sqr2_hi#1 init_mul_tables::dir#3 ] ( main:2::init_mul_tables:5 [ init_mul_tables::x_255#1 init_mul_tables::sqr2_lo#1 init_mul_tables::sqr2_hi#1 init_mul_tables::dir#3 ] ) - [90] if((byte*) init_mul_tables::sqr2_lo#1!=(const byte[512]) mul_sqr2_lo#0+(word/signed word) 511) goto init_mul_tables::@3 [ init_mul_tables::x_255#1 init_mul_tables::sqr2_lo#1 init_mul_tables::sqr2_hi#1 init_mul_tables::dir#3 ] ( main:2::init_mul_tables:5 [ init_mul_tables::x_255#1 init_mul_tables::sqr2_lo#1 init_mul_tables::sqr2_hi#1 init_mul_tables::dir#3 ] ) + [139] (byte) init_mul_tables::dir#3 ← phi( init_mul_tables::@12/(byte) init_mul_tables::dir#2 init_mul_tables::@3/(byte/signed byte/word/signed word) 1 ) [ init_mul_tables::sqr2_lo#2 init_mul_tables::x_255#1 init_mul_tables::sqr2_hi#1 init_mul_tables::dir#3 ] ( main:2::init_mul_tables:7 [ init_mul_tables::sqr2_lo#2 init_mul_tables::x_255#1 init_mul_tables::sqr2_hi#1 init_mul_tables::dir#3 ] ) + [140] (byte*) init_mul_tables::sqr2_lo#1 ← ++ (byte*) init_mul_tables::sqr2_lo#2 [ init_mul_tables::x_255#1 init_mul_tables::sqr2_lo#1 init_mul_tables::sqr2_hi#1 init_mul_tables::dir#3 ] ( main:2::init_mul_tables:7 [ init_mul_tables::x_255#1 init_mul_tables::sqr2_lo#1 init_mul_tables::sqr2_hi#1 init_mul_tables::dir#3 ] ) + [141] if((byte*) init_mul_tables::sqr2_lo#1!=(const byte[512]) mul_sqr2_lo#0+(word/signed word) 511) goto init_mul_tables::@3 [ init_mul_tables::x_255#1 init_mul_tables::sqr2_lo#1 init_mul_tables::sqr2_hi#1 init_mul_tables::dir#3 ] ( main:2::init_mul_tables:7 [ init_mul_tables::x_255#1 init_mul_tables::sqr2_lo#1 init_mul_tables::sqr2_hi#1 init_mul_tables::dir#3 ] ) to:init_mul_tables::@8 init_mul_tables::@8: scope:[init_mul_tables] from init_mul_tables::@4 - [91] *((const byte[512]) mul_sqr2_lo#0+(word/signed word) 511) ← *((const byte[512]) mul_sqr1_lo#0+(word/signed word) 256) [ ] ( main:2::init_mul_tables:5 [ ] ) - [92] *((const byte[512]) mul_sqr2_hi#0+(word/signed word) 511) ← *((const byte[512]) mul_sqr1_hi#0+(word/signed word) 256) [ ] ( main:2::init_mul_tables:5 [ ] ) + [142] *((const byte[512]) mul_sqr2_lo#0+(word/signed word) 511) ← *((const byte[512]) mul_sqr1_lo#0+(word/signed word) 256) [ ] ( main:2::init_mul_tables:7 [ ] ) + [143] *((const byte[512]) mul_sqr2_hi#0+(word/signed word) 511) ← *((const byte[512]) mul_sqr1_hi#0+(word/signed word) 256) [ ] ( main:2::init_mul_tables:7 [ ] ) to:init_mul_tables::@return init_mul_tables::@return: scope:[init_mul_tables] from init_mul_tables::@8 - [93] return [ ] ( main:2::init_mul_tables:5 [ ] ) + [144] return [ ] ( main:2::init_mul_tables:7 [ ] ) to:@return init_mul_tables::@12: scope:[init_mul_tables] from init_mul_tables::@3 - [94] phi() [ init_mul_tables::sqr2_lo#2 init_mul_tables::dir#2 init_mul_tables::x_255#1 init_mul_tables::sqr2_hi#1 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr2_lo#2 init_mul_tables::dir#2 init_mul_tables::x_255#1 init_mul_tables::sqr2_hi#1 ] ) + [145] phi() [ init_mul_tables::sqr2_lo#2 init_mul_tables::dir#2 init_mul_tables::x_255#1 init_mul_tables::sqr2_hi#1 ] ( main:2::init_mul_tables:7 [ init_mul_tables::sqr2_lo#2 init_mul_tables::dir#2 init_mul_tables::x_255#1 init_mul_tables::sqr2_hi#1 ] ) to:init_mul_tables::@4 +print_cls: scope:[print_cls] from main + [146] phi() [ ] ( main:2::print_cls:5 [ ] ) + to:print_cls::@1 +print_cls::@1: scope:[print_cls] from print_cls print_cls::@1 + [147] (byte*) print_cls::sc#2 ← phi( print_cls/((byte*))(word/signed word) 1024 print_cls::@1/(byte*) print_cls::sc#1 ) [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] ) + [148] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] ) + [149] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) + [150] if((byte*) print_cls::sc#1!=(word/signed word) 1024+(word/signed word) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) + to:print_cls::@return +print_cls::@return: scope:[print_cls] from print_cls::@1 + [151] return [ ] ( main:2::print_cls:5 [ ] ) + to:@return diff --git a/src/test/java/dk/camelot64/kickc/test/ref/multiply.log b/src/test/java/dk/camelot64/kickc/test/ref/multiply.log index 2e7bbd7a0..da17aa58a 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/multiply.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/multiply.log @@ -8,9 +8,23 @@ import "print.kc" byte* BGCOL = $d021; void main() { + *BGCOL = 5; + print_cls(); init_mul_tables(); init_mul_tables_asm(); mul_tables_compare(); + mul_results_compare(); +} + +// Perform a slow multiplication by repeated addition +word slow_multiply(byte a, byte b) { + word m = 0; + if(a>0) { + for(byte i = 0; i!=a; i++) { + m = m + b; + } + } + return m; } // mul_sqr tables will contain f(x)=int(x*x/4) and g(x) = f(x-255). @@ -115,19 +129,45 @@ void init_mul_tables_asm() { *mem = *asm_mul_sqr1_hi; *mem = *asm_mul_sqr2_lo; *mem = *asm_mul_sqr2_hi; +} +// Fast multiply two bytes using ASM +word asm_multiply(byte a, byte b) { + const byte* memA = $fe; + const byte* memB = $ff; + *memA = a; + *memB = b; + asm { + lda memA + sta sm1+1 + sta sm3+1 + eor #$ff + sta sm2+1 + sta sm4+1 + ldx memB + sec + sm1: + lda asm_mul_sqr1_lo,x + sm2: + sbc asm_mul_sqr2_lo,x + sta memA + sm3: + lda asm_mul_sqr1_hi,x + sm4: + sbc asm_mul_sqr2_hi,x + sta memB + } + return { *memB, *memA }; } // Compare the ASM-based mul tables with the KC-based mul tables // Red screen on failure - green on success void mul_tables_compare() { - *BGCOL = 5; byte* asm_sqr = asm_mul_sqr1_lo; for( byte* kc_sqr=mul_sqr1_lo; kc_sqr (byte/signed byte/word/signed word) 0 + (boolean~) slow_multiply::$1 ← ! (boolean~) slow_multiply::$0 + if((boolean~) slow_multiply::$1) goto slow_multiply::@1 + (byte) slow_multiply::i ← (byte/signed byte/word/signed word) 0 +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() (byte[512]) mul_sqr1_lo ← { fill( 512, 0) } (byte[512]) mul_sqr1_hi ← { fill( 512, 0) } (byte[512]) mul_sqr2_lo ← { fill( 512, 0) } @@ -344,8 +429,19 @@ proc (void()) init_mul_tables_asm() init_mul_tables_asm::@return: return endproc // init_mul_tables_asm() +proc (word()) asm_multiply((byte) asm_multiply::a , (byte) asm_multiply::b) + (byte*) asm_multiply::memA ← (byte/word/signed word) 254 + (byte*) asm_multiply::memB ← (byte/word/signed word) 255 + *((byte*) asm_multiply::memA) ← (byte) asm_multiply::a + *((byte*) asm_multiply::memB) ← (byte) asm_multiply::b + asm { ldamemAstasm1+1stasm3+1eor#$ffstasm2+1stasm4+1ldxmemBsecsm1:ldaasm_mul_sqr1_lo,xsm2:sbcasm_mul_sqr2_lo,xstamemAsm3:ldaasm_mul_sqr1_hi,xsm4:sbcasm_mul_sqr2_hi,xstamemB } + (word) asm_multiply::return ← { *((byte*) asm_multiply::memB), *((byte*) asm_multiply::memA) } + goto asm_multiply::@return +asm_multiply::@return: + (word) asm_multiply::return ← (word) asm_multiply::return + return (word) asm_multiply::return +endproc // asm_multiply() proc (void()) mul_tables_compare() - *((byte*) BGCOL) ← (byte/signed byte/word/signed word) 5 (byte*) mul_tables_compare::asm_sqr ← (byte[512]) asm_mul_sqr1_lo (byte*) mul_tables_compare::kc_sqr ← (byte[512]) mul_sqr1_lo mul_tables_compare::@1: @@ -353,24 +449,55 @@ mul_tables_compare::@1: (boolean~) mul_tables_compare::$1 ← ! (boolean~) mul_tables_compare::$0 if((boolean~) mul_tables_compare::$1) goto mul_tables_compare::@2 *((byte*) BGCOL) ← (byte/signed byte/word/signed word) 2 - (void~) mul_tables_compare::$2 ← call print_cls - (void~) mul_tables_compare::$3 ← call print_str (string) "mul table mismatch at @" - (word~) mul_tables_compare::$4 ← ((word)) (byte*) mul_tables_compare::asm_sqr - (void~) mul_tables_compare::$5 ← call print_word (word~) mul_tables_compare::$4 - (void~) mul_tables_compare::$6 ← call print_str (string) " / @" - (word~) mul_tables_compare::$7 ← ((word)) (byte*) mul_tables_compare::kc_sqr - (void~) mul_tables_compare::$8 ← call print_word (word~) mul_tables_compare::$7 + (void~) mul_tables_compare::$2 ← call print_str (string) "multiply table mismatch at @" + (word~) mul_tables_compare::$3 ← ((word)) (byte*) mul_tables_compare::asm_sqr + (void~) mul_tables_compare::$4 ← call print_word (word~) mul_tables_compare::$3 + (void~) mul_tables_compare::$5 ← call print_str (string) " / @" + (word~) mul_tables_compare::$6 ← ((word)) (byte*) mul_tables_compare::kc_sqr + (void~) mul_tables_compare::$7 ← call print_word (word~) mul_tables_compare::$6 goto mul_tables_compare::@return mul_tables_compare::@2: (byte*) mul_tables_compare::asm_sqr ← ++ (byte*) mul_tables_compare::asm_sqr (byte*) mul_tables_compare::kc_sqr ← ++ (byte*) mul_tables_compare::kc_sqr - (word/signed word~) mul_tables_compare::$9 ← (word/signed word) 512 * (byte/signed byte/word/signed word) 4 - (byte*~) mul_tables_compare::$10 ← (byte[512]) mul_sqr1_lo + (word/signed word~) mul_tables_compare::$9 - (boolean~) mul_tables_compare::$11 ← (byte*) mul_tables_compare::kc_sqr < (byte*~) mul_tables_compare::$10 - if((boolean~) mul_tables_compare::$11) goto mul_tables_compare::@1 + (word/signed word~) mul_tables_compare::$8 ← (word/signed word) 512 * (byte/signed byte/word/signed word) 4 + (byte*~) mul_tables_compare::$9 ← (byte[512]) mul_sqr1_lo + (word/signed word~) mul_tables_compare::$8 + (boolean~) mul_tables_compare::$10 ← (byte*) mul_tables_compare::kc_sqr < (byte*~) mul_tables_compare::$9 + if((boolean~) mul_tables_compare::$10) goto mul_tables_compare::@1 + (void~) mul_tables_compare::$11 ← call print_str (string) "multiply tables match!@" + (void~) mul_tables_compare::$12 ← call print_ln mul_tables_compare::@return: return endproc // mul_tables_compare() +proc (void()) mul_results_compare() + (byte) mul_results_compare::a ← (byte/signed byte/word/signed word) 0 +mul_results_compare::@1: + (byte) mul_results_compare::b ← (byte/signed byte/word/signed word) 0 +mul_results_compare::@2: + (word~) mul_results_compare::$0 ← call slow_multiply (byte) mul_results_compare::a (byte) mul_results_compare::b + (word) mul_results_compare::ms ← (word~) mul_results_compare::$0 + (word~) mul_results_compare::$1 ← call asm_multiply (byte) mul_results_compare::a (byte) mul_results_compare::b + (word) mul_results_compare::ma ← (word~) mul_results_compare::$1 + (boolean~) mul_results_compare::$2 ← (word) mul_results_compare::ms != (word) mul_results_compare::ma + (boolean~) mul_results_compare::$3 ← ! (boolean~) mul_results_compare::$2 + if((boolean~) mul_results_compare::$3) goto mul_results_compare::@3 + *((byte*) BGCOL) ← (byte/signed byte/word/signed word) 2 + (void~) mul_results_compare::$4 ← call print_str (string) "multiply mismatch slow:@" + (void~) mul_results_compare::$5 ← call print_word (word) mul_results_compare::ms + (void~) mul_results_compare::$6 ← call print_str (string) " / fast asm:" + (void~) mul_results_compare::$7 ← call print_word (word) mul_results_compare::ma + goto mul_results_compare::@return +mul_results_compare::@3: + (byte) mul_results_compare::b ← ++ (byte) mul_results_compare::b + (boolean~) mul_results_compare::$8 ← (byte) mul_results_compare::b != (byte/signed byte/word/signed word) 0 + if((boolean~) mul_results_compare::$8) goto mul_results_compare::@2 + (byte) mul_results_compare::a ← ++ (byte) mul_results_compare::a + (boolean~) mul_results_compare::$9 ← (byte) mul_results_compare::a != (byte/signed byte/word/signed word) 0 + if((boolean~) mul_results_compare::$9) goto mul_results_compare::@1 + (void~) mul_results_compare::$10 ← call print_str (string) "multiply results match!@" + (void~) mul_results_compare::$11 ← call print_ln +mul_results_compare::@return: + return +endproc // mul_results_compare() call main SYMBOLS @@ -379,6 +506,13 @@ SYMBOLS (byte[512]) asm_mul_sqr1_lo (byte[512]) asm_mul_sqr2_hi (byte[512]) asm_mul_sqr2_lo +(word()) asm_multiply((byte) asm_multiply::a , (byte) asm_multiply::b) +(label) asm_multiply::@return +(byte) asm_multiply::a +(byte) asm_multiply::b +(byte*) asm_multiply::memA +(byte*) asm_multiply::memB +(word) asm_multiply::return (byte*) char_cursor (void()) init_mul_tables() (byte*~) init_mul_tables::$0 @@ -424,7 +558,30 @@ SYMBOLS (void~) main::$0 (void~) main::$1 (void~) main::$2 +(void~) main::$3 +(void~) main::$4 (label) main::@return +(void()) mul_results_compare() +(word~) mul_results_compare::$0 +(word~) mul_results_compare::$1 +(void~) mul_results_compare::$10 +(void~) mul_results_compare::$11 +(boolean~) mul_results_compare::$2 +(boolean~) mul_results_compare::$3 +(void~) mul_results_compare::$4 +(void~) mul_results_compare::$5 +(void~) mul_results_compare::$6 +(void~) mul_results_compare::$7 +(boolean~) mul_results_compare::$8 +(boolean~) mul_results_compare::$9 +(label) mul_results_compare::@1 +(label) mul_results_compare::@2 +(label) mul_results_compare::@3 +(label) mul_results_compare::@return +(byte) mul_results_compare::a +(byte) mul_results_compare::b +(word) mul_results_compare::ma +(word) mul_results_compare::ms (byte[512]) mul_sqr1_hi (byte[512]) mul_sqr1_lo (byte[512]) mul_sqr2_hi @@ -432,16 +589,17 @@ SYMBOLS (void()) mul_tables_compare() (boolean~) mul_tables_compare::$0 (boolean~) mul_tables_compare::$1 -(byte*~) mul_tables_compare::$10 -(boolean~) mul_tables_compare::$11 +(boolean~) mul_tables_compare::$10 +(void~) mul_tables_compare::$11 +(void~) mul_tables_compare::$12 (void~) mul_tables_compare::$2 -(void~) mul_tables_compare::$3 -(word~) mul_tables_compare::$4 +(word~) mul_tables_compare::$3 +(void~) mul_tables_compare::$4 (void~) mul_tables_compare::$5 -(void~) mul_tables_compare::$6 -(word~) mul_tables_compare::$7 -(void~) mul_tables_compare::$8 -(word/signed word~) mul_tables_compare::$9 +(word~) mul_tables_compare::$6 +(void~) mul_tables_compare::$7 +(word/signed word~) mul_tables_compare::$8 +(byte*~) mul_tables_compare::$9 (label) mul_tables_compare::@1 (label) mul_tables_compare::@2 (label) mul_tables_compare::@return @@ -483,11 +641,26 @@ SYMBOLS (void~) print_word::$3 (label) print_word::@return (word) print_word::w +(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 Promoting word/signed word to byte* in line_cursor ← ((byte*)) 1024 Promoting word/signed word to byte* in print_cls::sc ← ((byte*)) 1024 Promoting word to byte* in BGCOL ← ((byte*)) 53281 Promoting byte/word/signed word to byte* in init_mul_tables_asm::mem ← ((byte*)) 255 +Promoting byte/word/signed word to byte* in asm_multiply::memA ← ((byte*)) 254 +Promoting byte/word/signed word to byte* in asm_multiply::memB ← ((byte*)) 255 INITIAL CONTROL FLOW GRAPH @begin: scope:[] from (byte*) line_cursor ← ((byte*)) (word/signed word) 1024 @@ -584,19 +757,51 @@ print_cls::@return: scope:[print_cls] from print_cls::@2 (byte*) BGCOL ← ((byte*)) (word) 53281 to:@7 main: scope:[main] from - (void~) main::$0 ← call init_mul_tables - (void~) main::$1 ← call init_mul_tables_asm - (void~) main::$2 ← call mul_tables_compare + *((byte*) BGCOL) ← (byte/signed byte/word/signed word) 5 + (void~) main::$0 ← call print_cls + (void~) main::$1 ← call init_mul_tables + (void~) main::$2 ← call init_mul_tables_asm + (void~) main::$3 ← call mul_tables_compare + (void~) main::$4 ← call mul_results_compare to:main::@return main::@return: scope:[main] from main return to:@return @7: scope:[] from @6 + to:@8 +slow_multiply: scope:[slow_multiply] from + (word) slow_multiply::m ← (byte/signed byte/word/signed word) 0 + (boolean~) slow_multiply::$0 ← (byte) slow_multiply::a > (byte/signed byte/word/signed word) 0 + (boolean~) slow_multiply::$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) 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 + to:@return +slow_multiply::@5: scope:[slow_multiply] from + to:slow_multiply::@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) } - to:@8 + to:@9 init_mul_tables: scope:[init_mul_tables] from (word) init_mul_tables::sqr ← (byte/signed byte/word/signed word) 0 (byte) init_mul_tables::x_2 ← (byte/signed byte/word/signed word) 0 @@ -668,12 +873,12 @@ init_mul_tables::@8: scope:[init_mul_tables] from init_mul_tables::@4 init_mul_tables::@return: scope:[init_mul_tables] from init_mul_tables::@8 return to:@return -@8: scope:[] from @7 +@9: scope:[] from @8 (byte[512]) asm_mul_sqr1_lo ← { fill( 512, 0) } (byte[512]) asm_mul_sqr1_hi ← { fill( 512, 0) } (byte[512]) asm_mul_sqr2_lo ← { fill( 512, 0) } (byte[512]) asm_mul_sqr2_hi ← { fill( 512, 0) } - to:@9 + to:@10 init_mul_tables_asm: scope:[init_mul_tables_asm] from asm { ldx#$00txa.byte$c9lb1:tyaadc#$00ml1:staasm_mul_sqr1_hi,xtaycmp#$40txarorml9:adc#$00staml9+1inxml0:staasm_mul_sqr1_lo,xbnelb1incml0+2incml1+2clcinybnelb1ldx#$00ldy#$ff!:ldaasm_mul_sqr1_hi+1,xstaasm_mul_sqr2_hi+$100,xldaasm_mul_sqr1_hi,xstaasm_mul_sqr2_hi,yldaasm_mul_sqr1_lo+1,xstaasm_mul_sqr2_lo+$100,xldaasm_mul_sqr1_lo,xstaasm_mul_sqr2_lo,ydeyinxbne!- } (byte*) init_mul_tables_asm::mem ← ((byte*)) (byte/word/signed word) 255 @@ -685,10 +890,25 @@ init_mul_tables_asm: scope:[init_mul_tables_asm] from init_mul_tables_asm::@return: scope:[init_mul_tables_asm] from init_mul_tables_asm return to:@return -@9: scope:[] from @8 - to:@10 +@10: scope:[] from @9 + to:@11 +asm_multiply: scope:[asm_multiply] from + (byte*) asm_multiply::memA ← ((byte*)) (byte/word/signed word) 254 + (byte*) asm_multiply::memB ← ((byte*)) (byte/word/signed word) 255 + *((byte*) asm_multiply::memA) ← (byte) asm_multiply::a + *((byte*) asm_multiply::memB) ← (byte) asm_multiply::b + asm { ldamemAstasm1+1stasm3+1eor#$ffstasm2+1stasm4+1ldxmemBsecsm1:ldaasm_mul_sqr1_lo,xsm2:sbcasm_mul_sqr2_lo,xstamemAsm3:ldaasm_mul_sqr1_hi,xsm4:sbcasm_mul_sqr2_hi,xstamemB } + (word) asm_multiply::return ← { *((byte*) asm_multiply::memB), *((byte*) asm_multiply::memA) } + to:asm_multiply::@return +asm_multiply::@return: scope:[asm_multiply] from asm_multiply asm_multiply::@1 + (word) asm_multiply::return ← (word) asm_multiply::return + return (word) asm_multiply::return + to:@return +asm_multiply::@1: scope:[asm_multiply] from + to:asm_multiply::@return +@11: scope:[] from @10 + to:@12 mul_tables_compare: scope:[mul_tables_compare] from - *((byte*) BGCOL) ← (byte/signed byte/word/signed word) 5 (byte*) mul_tables_compare::asm_sqr ← (byte[512]) asm_mul_sqr1_lo (byte*) mul_tables_compare::kc_sqr ← (byte[512]) mul_sqr1_lo to:mul_tables_compare::@1 @@ -700,20 +920,19 @@ mul_tables_compare::@1: scope:[mul_tables_compare] from mul_tables_compare mul_ mul_tables_compare::@2: scope:[mul_tables_compare] from mul_tables_compare::@1 mul_tables_compare::@4 (byte*) mul_tables_compare::asm_sqr ← ++ (byte*) mul_tables_compare::asm_sqr (byte*) mul_tables_compare::kc_sqr ← ++ (byte*) mul_tables_compare::kc_sqr - (word/signed word~) mul_tables_compare::$9 ← (word/signed word) 512 * (byte/signed byte/word/signed word) 4 - (byte*~) mul_tables_compare::$10 ← (byte[512]) mul_sqr1_lo + (word/signed word~) mul_tables_compare::$9 - (boolean~) mul_tables_compare::$11 ← (byte*) mul_tables_compare::kc_sqr < (byte*~) mul_tables_compare::$10 - if((boolean~) mul_tables_compare::$11) goto mul_tables_compare::@1 + (word/signed word~) mul_tables_compare::$8 ← (word/signed word) 512 * (byte/signed byte/word/signed word) 4 + (byte*~) mul_tables_compare::$9 ← (byte[512]) mul_sqr1_lo + (word/signed word~) mul_tables_compare::$8 + (boolean~) mul_tables_compare::$10 ← (byte*) mul_tables_compare::kc_sqr < (byte*~) mul_tables_compare::$9 + if((boolean~) mul_tables_compare::$10) goto mul_tables_compare::@1 to:mul_tables_compare::@5 mul_tables_compare::@3: scope:[mul_tables_compare] from mul_tables_compare::@1 *((byte*) BGCOL) ← (byte/signed byte/word/signed word) 2 - (void~) mul_tables_compare::$2 ← call print_cls - (void~) mul_tables_compare::$3 ← call print_str (string) "mul table mismatch at @" - (word~) mul_tables_compare::$4 ← ((word)) (byte*) mul_tables_compare::asm_sqr - (void~) mul_tables_compare::$5 ← call print_word (word~) mul_tables_compare::$4 - (void~) mul_tables_compare::$6 ← call print_str (string) " / @" - (word~) mul_tables_compare::$7 ← ((word)) (byte*) mul_tables_compare::kc_sqr - (void~) mul_tables_compare::$8 ← call print_word (word~) mul_tables_compare::$7 + (void~) mul_tables_compare::$2 ← call print_str (string) "multiply table mismatch at @" + (word~) mul_tables_compare::$3 ← ((word)) (byte*) mul_tables_compare::asm_sqr + (void~) mul_tables_compare::$4 ← call print_word (word~) mul_tables_compare::$3 + (void~) mul_tables_compare::$5 ← call print_str (string) " / @" + (word~) mul_tables_compare::$6 ← ((word)) (byte*) mul_tables_compare::kc_sqr + (void~) mul_tables_compare::$7 ← call print_word (word~) mul_tables_compare::$6 to:mul_tables_compare::@return mul_tables_compare::@return: scope:[mul_tables_compare] from mul_tables_compare::@3 mul_tables_compare::@5 return @@ -721,13 +940,57 @@ mul_tables_compare::@return: scope:[mul_tables_compare] from mul_tables_compare mul_tables_compare::@4: scope:[mul_tables_compare] from to:mul_tables_compare::@2 mul_tables_compare::@5: scope:[mul_tables_compare] from mul_tables_compare::@2 + (void~) mul_tables_compare::$11 ← call print_str (string) "multiply tables match!@" + (void~) mul_tables_compare::$12 ← call print_ln to:mul_tables_compare::@return -@10: scope:[] from @9 +@12: scope:[] from @11 + to:@13 +mul_results_compare: scope:[mul_results_compare] from + (byte) mul_results_compare::a ← (byte/signed byte/word/signed word) 0 + to:mul_results_compare::@1 +mul_results_compare::@1: scope:[mul_results_compare] from mul_results_compare mul_results_compare::@6 + (byte) mul_results_compare::b ← (byte/signed byte/word/signed word) 0 + to:mul_results_compare::@2 +mul_results_compare::@2: scope:[mul_results_compare] from mul_results_compare::@1 mul_results_compare::@3 + (word~) mul_results_compare::$0 ← call slow_multiply (byte) mul_results_compare::a (byte) mul_results_compare::b + (word) mul_results_compare::ms ← (word~) mul_results_compare::$0 + (word~) mul_results_compare::$1 ← call asm_multiply (byte) mul_results_compare::a (byte) mul_results_compare::b + (word) mul_results_compare::ma ← (word~) mul_results_compare::$1 + (boolean~) mul_results_compare::$2 ← (word) mul_results_compare::ms != (word) mul_results_compare::ma + (boolean~) mul_results_compare::$3 ← ! (boolean~) mul_results_compare::$2 + if((boolean~) mul_results_compare::$3) goto mul_results_compare::@3 + to:mul_results_compare::@4 +mul_results_compare::@3: scope:[mul_results_compare] from mul_results_compare::@2 mul_results_compare::@5 + (byte) mul_results_compare::b ← ++ (byte) mul_results_compare::b + (boolean~) mul_results_compare::$8 ← (byte) mul_results_compare::b != (byte/signed byte/word/signed word) 0 + if((boolean~) mul_results_compare::$8) goto mul_results_compare::@2 + to:mul_results_compare::@6 +mul_results_compare::@4: scope:[mul_results_compare] from mul_results_compare::@2 + *((byte*) BGCOL) ← (byte/signed byte/word/signed word) 2 + (void~) mul_results_compare::$4 ← call print_str (string) "multiply mismatch slow:@" + (void~) mul_results_compare::$5 ← call print_word (word) mul_results_compare::ms + (void~) mul_results_compare::$6 ← call print_str (string) " / fast asm:" + (void~) mul_results_compare::$7 ← call print_word (word) mul_results_compare::ma + to:mul_results_compare::@return +mul_results_compare::@return: scope:[mul_results_compare] from mul_results_compare::@4 mul_results_compare::@7 + return + to:@return +mul_results_compare::@5: scope:[mul_results_compare] from + to:mul_results_compare::@3 +mul_results_compare::@6: scope:[mul_results_compare] from mul_results_compare::@3 + (byte) mul_results_compare::a ← ++ (byte) mul_results_compare::a + (boolean~) mul_results_compare::$9 ← (byte) mul_results_compare::a != (byte/signed byte/word/signed word) 0 + if((boolean~) mul_results_compare::$9) goto mul_results_compare::@1 + to:mul_results_compare::@7 +mul_results_compare::@7: scope:[mul_results_compare] from mul_results_compare::@6 + (void~) mul_results_compare::$10 ← call print_str (string) "multiply results match!@" + (void~) mul_results_compare::$11 ← call print_ln + to:mul_results_compare::@return +@13: scope:[] from @12 call main to:@end -@end: scope:[] from @10 +@end: scope:[] from @13 -Removing unused procedure print_ln 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 @@ -735,13 +998,26 @@ Eliminating unused variable - keeping the call (void~) print_byte::$3 Eliminating unused variable - keeping the call (void~) main::$0 Eliminating unused variable - keeping the call (void~) main::$1 Eliminating unused variable - keeping the call (void~) main::$2 +Eliminating unused variable - keeping the call (void~) main::$3 +Eliminating unused variable - keeping the call (void~) main::$4 Eliminating unused variable - keeping the call (void~) mul_tables_compare::$2 -Eliminating unused variable - keeping the call (void~) mul_tables_compare::$3 +Eliminating unused variable - keeping the call (void~) mul_tables_compare::$4 Eliminating unused variable - keeping the call (void~) mul_tables_compare::$5 -Eliminating unused variable - keeping the call (void~) mul_tables_compare::$6 -Eliminating unused variable - keeping the call (void~) mul_tables_compare::$8 -Creating constant string variable for inline (const string) mul_tables_compare::str "mul table mismatch at @" +Eliminating unused variable - keeping the call (void~) mul_tables_compare::$7 +Eliminating unused variable - keeping the call (void~) mul_tables_compare::$11 +Eliminating unused variable - keeping the call (void~) mul_tables_compare::$12 +Eliminating unused variable - keeping the call (void~) mul_results_compare::$4 +Eliminating unused variable - keeping the call (void~) mul_results_compare::$5 +Eliminating unused variable - keeping the call (void~) mul_results_compare::$6 +Eliminating unused variable - keeping the call (void~) mul_results_compare::$7 +Eliminating unused variable - keeping the call (void~) mul_results_compare::$10 +Eliminating unused variable - keeping the call (void~) mul_results_compare::$11 +Creating constant string variable for inline (const string) mul_tables_compare::str "multiply table mismatch at @" Creating constant string variable for inline (const string) mul_tables_compare::str1 " / @" +Creating constant string variable for inline (const string) mul_tables_compare::str2 "multiply tables match!@" +Creating constant string variable for inline (const string) mul_results_compare::str "multiply mismatch slow:@" +Creating constant string variable for inline (const string) mul_results_compare::str1 " / fast asm:" +Creating constant string variable for inline (const string) mul_results_compare::str2 "multiply results match!@" Removing empty block print_str::@4 Removing empty block print_str::@3 Removing empty block print_str::@5 @@ -752,16 +1028,28 @@ Removing empty block @3 Removing empty block @4 Removing empty block @5 Removing empty block print_cls::@2 -Removing empty block @9 +Removing empty block @7 +Removing empty block slow_multiply::@4 +Removing empty block slow_multiply::@5 +Removing empty block @10 +Removing empty block asm_multiply::@1 +Removing empty block @11 Removing empty block mul_tables_compare::@4 -Removing empty block mul_tables_compare::@5 +Removing empty block @12 +Removing empty block mul_results_compare::@5 PROCEDURE MODIFY VARIABLE ANALYSIS print_str modifies char_cursor +print_ln modifies line_cursor +print_ln modifies char_cursor print_word modifies char_cursor print_byte modifies char_cursor print_char modifies char_cursor main modifies char_cursor +main modifies line_cursor mul_tables_compare modifies char_cursor +mul_tables_compare modifies line_cursor +mul_results_compare modifies char_cursor +mul_results_compare modifies line_cursor Completing Phi functions... Completing Phi functions... @@ -770,60 +1058,86 @@ Completing Phi functions... Completing Phi functions... Completing Phi functions... Completing Phi functions... +Completing Phi functions... +Completing Phi functions... +Completing Phi functions... CONTROL FLOW GRAPH SSA WITH ASSIGNMENT CALL & RETURN @begin: scope:[] from (byte*) line_cursor#0 ← ((byte*)) (word/signed word) 1024 (byte*) char_cursor#0 ← (byte*) line_cursor#0 to:@6 -print_str: scope:[print_str] from mul_tables_compare::@6 mul_tables_compare::@8 - (byte*) char_cursor#44 ← phi( mul_tables_compare::@6/(byte*) char_cursor#41 mul_tables_compare::@8/(byte*) char_cursor#14 ) - (byte*) print_str::str#5 ← phi( mul_tables_compare::@6/(byte*) print_str::str#1 mul_tables_compare::@8/(byte*) print_str::str#2 ) +print_str: scope:[print_str] from mul_results_compare::@11 mul_results_compare::@4 mul_results_compare::@7 mul_tables_compare::@3 mul_tables_compare::@5 mul_tables_compare::@7 + (byte*) char_cursor#71 ← phi( mul_results_compare::@11/(byte*) char_cursor#24 mul_results_compare::@4/(byte*) char_cursor#68 mul_results_compare::@7/(byte*) char_cursor#69 mul_tables_compare::@3/(byte*) char_cursor#66 mul_tables_compare::@5/(byte*) char_cursor#67 mul_tables_compare::@7/(byte*) char_cursor#17 ) + (byte*) print_str::str#9 ← phi( mul_results_compare::@11/(byte*) print_str::str#5 mul_results_compare::@4/(byte*) print_str::str#4 mul_results_compare::@7/(byte*) print_str::str#6 mul_tables_compare::@3/(byte*) print_str::str#1 mul_tables_compare::@5/(byte*) print_str::str#3 mul_tables_compare::@7/(byte*) print_str::str#2 ) to:print_str::@1 print_str::@1: scope:[print_str] from print_str print_str::@2 - (byte*) char_cursor#37 ← phi( print_str/(byte*) char_cursor#44 print_str::@2/(byte*) char_cursor#1 ) - (byte*) print_str::str#3 ← phi( print_str/(byte*) print_str::str#5 print_str::@2/(byte*) print_str::str#0 ) - (boolean~) print_str::$0 ← *((byte*) print_str::str#3) != (byte) '@' + (byte*) char_cursor#61 ← phi( print_str/(byte*) char_cursor#71 print_str::@2/(byte*) char_cursor#1 ) + (byte*) print_str::str#7 ← phi( print_str/(byte*) print_str::str#9 print_str::@2/(byte*) print_str::str#0 ) + (boolean~) print_str::$0 ← *((byte*) print_str::str#7) != (byte) '@' if((boolean~) print_str::$0) goto print_str::@2 to:print_str::@return print_str::@2: scope:[print_str] from print_str::@1 - (byte*) char_cursor#19 ← phi( print_str::@1/(byte*) char_cursor#37 ) - (byte*) print_str::str#4 ← phi( print_str::@1/(byte*) print_str::str#3 ) - *((byte*) char_cursor#19) ← *((byte*) print_str::str#4) - (byte*) char_cursor#1 ← ++ (byte*) char_cursor#19 - (byte*) print_str::str#0 ← ++ (byte*) print_str::str#4 + (byte*) char_cursor#31 ← phi( print_str::@1/(byte*) char_cursor#61 ) + (byte*) print_str::str#8 ← phi( print_str::@1/(byte*) print_str::str#7 ) + *((byte*) char_cursor#31) ← *((byte*) print_str::str#8) + (byte*) char_cursor#1 ← ++ (byte*) char_cursor#31 + (byte*) print_str::str#0 ← ++ (byte*) print_str::str#8 to:print_str::@1 print_str::@return: scope:[print_str] from print_str::@1 - (byte*) char_cursor#20 ← phi( print_str::@1/(byte*) char_cursor#37 ) - (byte*) char_cursor#2 ← (byte*) char_cursor#20 + (byte*) char_cursor#32 ← phi( print_str::@1/(byte*) char_cursor#61 ) + (byte*) char_cursor#2 ← (byte*) char_cursor#32 return to:@return -print_word: scope:[print_word] from mul_tables_compare::@7 mul_tables_compare::@9 - (byte*) char_cursor#38 ← phi( mul_tables_compare::@7/(byte*) char_cursor#13 mul_tables_compare::@9/(byte*) char_cursor#15 ) - (word) print_word::w#2 ← phi( mul_tables_compare::@7/(word) print_word::w#0 mul_tables_compare::@9/(word) print_word::w#1 ) - (byte~) print_word::$0 ← > (word) print_word::w#2 +print_ln: scope:[print_ln] from mul_results_compare::@14 mul_tables_compare::@10 + (byte*) char_cursor#62 ← phi( mul_results_compare::@14/(byte*) char_cursor#28 mul_tables_compare::@10/(byte*) char_cursor#21 ) + (byte*) line_cursor#22 ← phi( mul_results_compare::@14/(byte*) line_cursor#27 mul_tables_compare::@10/(byte*) line_cursor#25 ) + to:print_ln::@1 +print_ln::@1: scope:[print_ln] from print_ln print_ln::@1 + (byte*) char_cursor#33 ← phi( print_ln/(byte*) char_cursor#62 print_ln::@1/(byte*) char_cursor#33 ) + (byte*) line_cursor#11 ← phi( print_ln/(byte*) line_cursor#22 print_ln::@1/(byte*) line_cursor#1 ) + (byte*~) print_ln::$0 ← (byte*) line_cursor#11 + (byte/signed byte/word/signed word) 40 + (byte*) line_cursor#1 ← (byte*~) print_ln::$0 + (boolean~) print_ln::$1 ← (byte*) line_cursor#1 < (byte*) char_cursor#33 + if((boolean~) print_ln::$1) goto print_ln::@1 + to:print_ln::@2 +print_ln::@2: scope:[print_ln] from print_ln::@1 + (byte*) line_cursor#12 ← phi( print_ln::@1/(byte*) line_cursor#1 ) + (byte*) char_cursor#3 ← (byte*) line_cursor#12 + to:print_ln::@return +print_ln::@return: scope:[print_ln] from print_ln::@2 + (byte*) char_cursor#34 ← phi( print_ln::@2/(byte*) char_cursor#3 ) + (byte*) line_cursor#13 ← phi( print_ln::@2/(byte*) line_cursor#12 ) + (byte*) line_cursor#2 ← (byte*) line_cursor#13 + (byte*) char_cursor#4 ← (byte*) char_cursor#34 + return + to:@return +print_word: scope:[print_word] from mul_results_compare::@10 mul_results_compare::@12 mul_tables_compare::@6 mul_tables_compare::@8 + (byte*) char_cursor#63 ← phi( mul_results_compare::@10/(byte*) char_cursor#23 mul_results_compare::@12/(byte*) char_cursor#25 mul_tables_compare::@6/(byte*) char_cursor#16 mul_tables_compare::@8/(byte*) char_cursor#18 ) + (word) print_word::w#4 ← phi( mul_results_compare::@10/(word) print_word::w#2 mul_results_compare::@12/(word) print_word::w#3 mul_tables_compare::@6/(word) print_word::w#0 mul_tables_compare::@8/(word) print_word::w#1 ) + (byte~) print_word::$0 ← > (word) print_word::w#4 (byte) print_byte::b#0 ← (byte~) print_word::$0 call print_byte param-assignment to:print_word::@1 print_word::@1: scope:[print_word] from print_word - (word) print_word::w#3 ← phi( print_word/(word) print_word::w#2 ) - (byte*) char_cursor#21 ← phi( print_word/(byte*) char_cursor#8 ) - (byte*) char_cursor#3 ← (byte*) char_cursor#21 - (byte~) print_word::$2 ← < (word) print_word::w#3 + (word) print_word::w#5 ← phi( print_word/(word) print_word::w#4 ) + (byte*) char_cursor#35 ← phi( print_word/(byte*) char_cursor#10 ) + (byte*) char_cursor#5 ← (byte*) char_cursor#35 + (byte~) print_word::$2 ← < (word) print_word::w#5 (byte) print_byte::b#1 ← (byte~) print_word::$2 call print_byte param-assignment to:print_word::@2 print_word::@2: scope:[print_word] from print_word::@1 - (byte*) char_cursor#22 ← phi( print_word::@1/(byte*) char_cursor#8 ) - (byte*) char_cursor#4 ← (byte*) char_cursor#22 + (byte*) char_cursor#36 ← phi( print_word::@1/(byte*) char_cursor#10 ) + (byte*) char_cursor#6 ← (byte*) char_cursor#36 to:print_word::@return print_word::@return: scope:[print_word] from print_word::@2 - (byte*) char_cursor#23 ← phi( print_word::@2/(byte*) char_cursor#4 ) - (byte*) char_cursor#5 ← (byte*) char_cursor#23 + (byte*) char_cursor#37 ← phi( print_word::@2/(byte*) char_cursor#6 ) + (byte*) char_cursor#7 ← (byte*) char_cursor#37 return to:@return print_byte: scope:[print_byte] from print_word print_word::@1 - (byte*) char_cursor#39 ← phi( print_word/(byte*) char_cursor#38 print_word::@1/(byte*) char_cursor#3 ) + (byte*) char_cursor#64 ← phi( print_word/(byte*) char_cursor#63 print_word::@1/(byte*) char_cursor#5 ) (byte) print_byte::b#2 ← phi( print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 ) (byte[]) print_byte::hextab#0 ← { (byte) '0', (byte) '1', (byte) '2', (byte) '3', (byte) '4', (byte) '5', (byte) '6', (byte) '7', (byte) '8', (byte) '9', (byte) 'a', (byte) 'b', (byte) 'c', (byte) 'd', (byte) 'e', (byte) 'f' } (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word) 4 @@ -832,33 +1146,33 @@ print_byte: scope:[print_byte] from print_word print_word::@1 to:print_byte::@1 print_byte::@1: scope:[print_byte] from print_byte (byte) print_byte::b#3 ← phi( print_byte/(byte) print_byte::b#2 ) - (byte*) char_cursor#24 ← phi( print_byte/(byte*) char_cursor#10 ) - (byte*) char_cursor#6 ← (byte*) char_cursor#24 + (byte*) char_cursor#38 ← phi( print_byte/(byte*) char_cursor#12 ) + (byte*) char_cursor#8 ← (byte*) char_cursor#38 (byte~) print_byte::$2 ← (byte) print_byte::b#3 & (byte/signed byte/word/signed word) 15 (byte) print_char::ch#1 ← *((byte[]) print_byte::hextab#0 + (byte~) print_byte::$2) call print_char param-assignment to:print_byte::@2 print_byte::@2: scope:[print_byte] from print_byte::@1 - (byte*) char_cursor#25 ← phi( print_byte::@1/(byte*) char_cursor#10 ) - (byte*) char_cursor#7 ← (byte*) char_cursor#25 + (byte*) char_cursor#39 ← phi( print_byte::@1/(byte*) char_cursor#12 ) + (byte*) char_cursor#9 ← (byte*) char_cursor#39 to:print_byte::@return print_byte::@return: scope:[print_byte] from print_byte::@2 - (byte*) char_cursor#26 ← phi( print_byte::@2/(byte*) char_cursor#7 ) - (byte*) char_cursor#8 ← (byte*) char_cursor#26 + (byte*) char_cursor#40 ← phi( print_byte::@2/(byte*) char_cursor#9 ) + (byte*) char_cursor#10 ← (byte*) char_cursor#40 return to:@return print_char: scope:[print_char] from print_byte print_byte::@1 - (byte*) char_cursor#27 ← phi( print_byte/(byte*) char_cursor#39 print_byte::@1/(byte*) char_cursor#6 ) + (byte*) char_cursor#41 ← phi( print_byte/(byte*) char_cursor#64 print_byte::@1/(byte*) char_cursor#8 ) (byte) print_char::ch#2 ← phi( print_byte/(byte) print_char::ch#0 print_byte::@1/(byte) print_char::ch#1 ) - *((byte*) char_cursor#27) ← (byte) print_char::ch#2 - (byte*) char_cursor#9 ← ++ (byte*) char_cursor#27 + *((byte*) char_cursor#41) ← (byte) print_char::ch#2 + (byte*) char_cursor#11 ← ++ (byte*) char_cursor#41 to:print_char::@return print_char::@return: scope:[print_char] from print_char - (byte*) char_cursor#28 ← phi( print_char/(byte*) char_cursor#9 ) - (byte*) char_cursor#10 ← (byte*) char_cursor#28 + (byte*) char_cursor#42 ← phi( print_char/(byte*) char_cursor#11 ) + (byte*) char_cursor#12 ← (byte*) char_cursor#42 return to:@return -print_cls: scope:[print_cls] from mul_tables_compare::@3 +print_cls: scope:[print_cls] from main (byte*) print_cls::sc#0 ← ((byte*)) (word/signed word) 1024 to:print_cls::@1 print_cls::@1: scope:[print_cls] from print_cls print_cls::@1 @@ -873,42 +1187,100 @@ print_cls::@return: scope:[print_cls] from print_cls::@1 return to:@return @6: scope:[] from @begin - (byte*) char_cursor#52 ← phi( @begin/(byte*) char_cursor#0 ) + (byte*) line_cursor#42 ← phi( @begin/(byte*) line_cursor#0 ) + (byte*) char_cursor#84 ← phi( @begin/(byte*) char_cursor#0 ) (byte*) BGCOL#0 ← ((byte*)) (word) 53281 - to:@7 -main: scope:[main] from @10 - (byte*) BGCOL#7 ← phi( @10/(byte*) BGCOL#8 ) - (byte*) char_cursor#49 ← phi( @10/(byte*) char_cursor#43 ) - call init_mul_tables param-assignment + to:@8 +main: scope:[main] from @13 + (byte*) line_cursor#41 ← phi( @13/(byte*) line_cursor#28 ) + (byte*) char_cursor#83 ← phi( @13/(byte*) char_cursor#70 ) + (byte*) BGCOL#1 ← phi( @13/(byte*) BGCOL#4 ) + *((byte*) BGCOL#1) ← (byte/signed byte/word/signed word) 5 + call print_cls param-assignment to:main::@1 main::@1: scope:[main] from main - (byte*) BGCOL#5 ← phi( main/(byte*) BGCOL#7 ) - (byte*) char_cursor#45 ← phi( main/(byte*) char_cursor#49 ) - call init_mul_tables_asm param-assignment + (byte*) BGCOL#17 ← phi( main/(byte*) BGCOL#1 ) + (byte*) line_cursor#35 ← phi( main/(byte*) line_cursor#41 ) + (byte*) char_cursor#78 ← phi( main/(byte*) char_cursor#83 ) + call init_mul_tables param-assignment to:main::@2 main::@2: scope:[main] from main::@1 - (byte*) BGCOL#3 ← phi( main::@1/(byte*) BGCOL#5 ) - (byte*) char_cursor#40 ← phi( main::@1/(byte*) char_cursor#45 ) - call mul_tables_compare param-assignment + (byte*) BGCOL#14 ← phi( main::@1/(byte*) BGCOL#17 ) + (byte*) line_cursor#29 ← phi( main::@1/(byte*) line_cursor#35 ) + (byte*) char_cursor#72 ← phi( main::@1/(byte*) char_cursor#78 ) + call init_mul_tables_asm param-assignment to:main::@3 main::@3: scope:[main] from main::@2 - (byte*) char_cursor#29 ← phi( main::@2/(byte*) char_cursor#17 ) - (byte*) char_cursor#11 ← (byte*) char_cursor#29 + (byte*) BGCOL#12 ← phi( main::@2/(byte*) BGCOL#14 ) + (byte*) line_cursor#23 ← phi( main::@2/(byte*) line_cursor#29 ) + (byte*) char_cursor#65 ← phi( main::@2/(byte*) char_cursor#72 ) + call mul_tables_compare param-assignment + to:main::@4 +main::@4: scope:[main] from main::@3 + (byte*) BGCOL#20 ← phi( main::@3/(byte*) BGCOL#12 ) + (byte*) line_cursor#14 ← phi( main::@3/(byte*) line_cursor#6 ) + (byte*) char_cursor#43 ← phi( main::@3/(byte*) char_cursor#20 ) + (byte*) char_cursor#13 ← (byte*) char_cursor#43 + (byte*) line_cursor#3 ← (byte*) line_cursor#14 + call mul_results_compare param-assignment + to:main::@5 +main::@5: scope:[main] from main::@4 + (byte*) line_cursor#15 ← phi( main::@4/(byte*) line_cursor#8 ) + (byte*) char_cursor#44 ← phi( main::@4/(byte*) char_cursor#27 ) + (byte*) char_cursor#14 ← (byte*) char_cursor#44 + (byte*) line_cursor#4 ← (byte*) line_cursor#15 to:main::@return -main::@return: scope:[main] from main::@3 - (byte*) char_cursor#30 ← phi( main::@3/(byte*) char_cursor#11 ) - (byte*) char_cursor#12 ← (byte*) char_cursor#30 +main::@return: scope:[main] from main::@5 + (byte*) line_cursor#16 ← phi( main::@5/(byte*) line_cursor#4 ) + (byte*) char_cursor#45 ← phi( main::@5/(byte*) char_cursor#14 ) + (byte*) char_cursor#15 ← (byte*) char_cursor#45 + (byte*) line_cursor#5 ← (byte*) line_cursor#16 return to:@return -@7: scope:[] from @6 - (byte*) BGCOL#10 ← phi( @6/(byte*) BGCOL#0 ) - (byte*) char_cursor#50 ← phi( @6/(byte*) char_cursor#52 ) +slow_multiply: scope:[slow_multiply] from mul_results_compare::@2 + (byte) slow_multiply::b#3 ← phi( mul_results_compare::@2/(byte) slow_multiply::b#0 ) + (byte) slow_multiply::a#1 ← phi( mul_results_compare::@2/(byte) slow_multiply::a#0 ) + (word) slow_multiply::m#0 ← (byte/signed byte/word/signed word) 0 + (boolean~) slow_multiply::$0 ← (byte) slow_multiply::a#1 > (byte/signed byte/word/signed word) 0 + (boolean~) slow_multiply::$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) 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 + return + to:@return +@8: scope:[] from @6 + (byte*) line_cursor#36 ← phi( @6/(byte*) line_cursor#42 ) + (byte*) char_cursor#79 ← phi( @6/(byte*) char_cursor#84 ) + (byte*) BGCOL#11 ← phi( @6/(byte*) BGCOL#0 ) (byte[512]) mul_sqr1_lo#0 ← { fill( 512, 0) } (byte[512]) mul_sqr1_hi#0 ← { fill( 512, 0) } (byte[512]) mul_sqr2_lo#0 ← { fill( 512, 0) } (byte[512]) mul_sqr2_hi#0 ← { fill( 512, 0) } - to:@8 -init_mul_tables: scope:[init_mul_tables] from main + to:@9 +init_mul_tables: scope:[init_mul_tables] from main::@1 (word) init_mul_tables::sqr#0 ← (byte/signed byte/word/signed word) 0 (byte) init_mul_tables::x_2#0 ← (byte/signed byte/word/signed word) 0 (byte) init_mul_tables::c#0 ← (byte/signed byte/word/signed word) 0 @@ -1005,15 +1377,16 @@ init_mul_tables::@8: scope:[init_mul_tables] from init_mul_tables::@4 init_mul_tables::@return: scope:[init_mul_tables] from init_mul_tables::@8 return to:@return -@8: scope:[] from @7 - (byte*) BGCOL#9 ← phi( @7/(byte*) BGCOL#10 ) - (byte*) char_cursor#48 ← phi( @7/(byte*) char_cursor#50 ) +@9: scope:[] from @8 + (byte*) line_cursor#34 ← phi( @8/(byte*) line_cursor#36 ) + (byte*) char_cursor#77 ← phi( @8/(byte*) char_cursor#79 ) + (byte*) BGCOL#10 ← phi( @8/(byte*) BGCOL#11 ) (byte[512]) asm_mul_sqr1_lo#0 ← { fill( 512, 0) } (byte[512]) asm_mul_sqr1_hi#0 ← { fill( 512, 0) } (byte[512]) asm_mul_sqr2_lo#0 ← { fill( 512, 0) } (byte[512]) asm_mul_sqr2_hi#0 ← { fill( 512, 0) } - to:@10 -init_mul_tables_asm: scope:[init_mul_tables_asm] from main::@1 + to:@13 +init_mul_tables_asm: scope:[init_mul_tables_asm] from main::@2 asm { ldx#$00txa.byte$c9lb1:tyaadc#$00ml1:staasm_mul_sqr1_hi,xtaycmp#$40txarorml9:adc#$00staml9+1inxml0:staasm_mul_sqr1_lo,xbnelb1incml0+2incml1+2clcinybnelb1ldx#$00ldy#$ff!:ldaasm_mul_sqr1_hi+1,xstaasm_mul_sqr2_hi+$100,xldaasm_mul_sqr1_hi,xstaasm_mul_sqr2_hi,yldaasm_mul_sqr1_lo+1,xstaasm_mul_sqr2_lo+$100,xldaasm_mul_sqr1_lo,xstaasm_mul_sqr2_lo,ydeyinxbne!- } (byte*) init_mul_tables_asm::mem#0 ← ((byte*)) (byte/word/signed word) 255 *((byte*) init_mul_tables_asm::mem#0) ← *((byte[512]) asm_mul_sqr1_lo#0) @@ -1024,16 +1397,32 @@ init_mul_tables_asm: scope:[init_mul_tables_asm] from main::@1 init_mul_tables_asm::@return: scope:[init_mul_tables_asm] from init_mul_tables_asm return to:@return -mul_tables_compare: scope:[mul_tables_compare] from main::@2 - (byte*) char_cursor#51 ← phi( main::@2/(byte*) char_cursor#40 ) - (byte*) BGCOL#1 ← phi( main::@2/(byte*) BGCOL#3 ) - *((byte*) BGCOL#1) ← (byte/signed byte/word/signed word) 5 +asm_multiply: scope:[asm_multiply] from mul_results_compare::@8 + (byte) asm_multiply::b#1 ← phi( mul_results_compare::@8/(byte) asm_multiply::b#0 ) + (byte) asm_multiply::a#1 ← phi( mul_results_compare::@8/(byte) asm_multiply::a#0 ) + (byte*) asm_multiply::memA#0 ← ((byte*)) (byte/word/signed word) 254 + (byte*) asm_multiply::memB#0 ← ((byte*)) (byte/word/signed word) 255 + *((byte*) asm_multiply::memA#0) ← (byte) asm_multiply::a#1 + *((byte*) asm_multiply::memB#0) ← (byte) asm_multiply::b#1 + asm { ldamemAstasm1+1stasm3+1eor#$ffstasm2+1stasm4+1ldxmemBsecsm1:ldaasm_mul_sqr1_lo,xsm2:sbcasm_mul_sqr2_lo,xstamemAsm3:ldaasm_mul_sqr1_hi,xsm4:sbcasm_mul_sqr2_hi,xstamemB } + (word) asm_multiply::return#0 ← { *((byte*) asm_multiply::memB#0), *((byte*) asm_multiply::memA#0) } + to:asm_multiply::@return +asm_multiply::@return: scope:[asm_multiply] from asm_multiply + (word) asm_multiply::return#3 ← phi( asm_multiply/(word) asm_multiply::return#0 ) + (word) asm_multiply::return#1 ← (word) asm_multiply::return#3 + return + to:@return +mul_tables_compare: scope:[mul_tables_compare] from main::@3 + (byte*) line_cursor#47 ← phi( main::@3/(byte*) line_cursor#23 ) + (byte*) char_cursor#80 ← phi( main::@3/(byte*) char_cursor#65 ) + (byte*) BGCOL#7 ← phi( main::@3/(byte*) BGCOL#12 ) (byte*) mul_tables_compare::asm_sqr#0 ← (byte[512]) asm_mul_sqr1_lo#0 (byte*) mul_tables_compare::kc_sqr#0 ← (byte[512]) mul_sqr1_lo#0 to:mul_tables_compare::@1 mul_tables_compare::@1: scope:[mul_tables_compare] from mul_tables_compare mul_tables_compare::@2 - (byte*) char_cursor#46 ← phi( mul_tables_compare/(byte*) char_cursor#51 mul_tables_compare::@2/(byte*) char_cursor#42 ) - (byte*) BGCOL#4 ← phi( mul_tables_compare/(byte*) BGCOL#1 mul_tables_compare::@2/(byte*) BGCOL#6 ) + (byte*) line_cursor#43 ← phi( mul_tables_compare/(byte*) line_cursor#47 mul_tables_compare::@2/(byte*) line_cursor#38 ) + (byte*) char_cursor#73 ← phi( mul_tables_compare/(byte*) char_cursor#80 mul_tables_compare::@2/(byte*) char_cursor#74 ) + (byte*) BGCOL#5 ← phi( mul_tables_compare/(byte*) BGCOL#7 mul_tables_compare::@2/(byte*) BGCOL#8 ) (byte*) mul_tables_compare::asm_sqr#2 ← phi( mul_tables_compare/(byte*) mul_tables_compare::asm_sqr#0 mul_tables_compare::@2/(byte*) mul_tables_compare::asm_sqr#1 ) (byte*) mul_tables_compare::kc_sqr#2 ← phi( mul_tables_compare/(byte*) mul_tables_compare::kc_sqr#0 mul_tables_compare::@2/(byte*) mul_tables_compare::kc_sqr#1 ) (boolean~) mul_tables_compare::$0 ← *((byte*) mul_tables_compare::kc_sqr#2) != *((byte*) mul_tables_compare::asm_sqr#2) @@ -1041,89 +1430,258 @@ mul_tables_compare::@1: scope:[mul_tables_compare] from mul_tables_compare mul_ if((boolean~) mul_tables_compare::$1) goto mul_tables_compare::@2 to:mul_tables_compare::@3 mul_tables_compare::@2: scope:[mul_tables_compare] from mul_tables_compare::@1 - (byte*) BGCOL#6 ← phi( mul_tables_compare::@1/(byte*) BGCOL#4 ) - (byte*) char_cursor#42 ← phi( mul_tables_compare::@1/(byte*) char_cursor#46 ) + (byte*) line_cursor#38 ← phi( mul_tables_compare::@1/(byte*) line_cursor#43 ) + (byte*) char_cursor#74 ← phi( mul_tables_compare::@1/(byte*) char_cursor#73 ) + (byte*) BGCOL#8 ← phi( mul_tables_compare::@1/(byte*) BGCOL#5 ) (byte*) mul_tables_compare::kc_sqr#3 ← phi( mul_tables_compare::@1/(byte*) mul_tables_compare::kc_sqr#2 ) (byte*) mul_tables_compare::asm_sqr#3 ← phi( mul_tables_compare::@1/(byte*) mul_tables_compare::asm_sqr#2 ) (byte*) mul_tables_compare::asm_sqr#1 ← ++ (byte*) mul_tables_compare::asm_sqr#3 (byte*) mul_tables_compare::kc_sqr#1 ← ++ (byte*) mul_tables_compare::kc_sqr#3 - (word/signed word~) mul_tables_compare::$9 ← (word/signed word) 512 * (byte/signed byte/word/signed word) 4 - (byte*~) mul_tables_compare::$10 ← (byte[512]) mul_sqr1_lo#0 + (word/signed word~) mul_tables_compare::$9 - (boolean~) mul_tables_compare::$11 ← (byte*) mul_tables_compare::kc_sqr#1 < (byte*~) mul_tables_compare::$10 - if((boolean~) mul_tables_compare::$11) goto mul_tables_compare::@1 - to:mul_tables_compare::@return + (word/signed word~) mul_tables_compare::$8 ← (word/signed word) 512 * (byte/signed byte/word/signed word) 4 + (byte*~) mul_tables_compare::$9 ← (byte[512]) mul_sqr1_lo#0 + (word/signed word~) mul_tables_compare::$8 + (boolean~) mul_tables_compare::$10 ← (byte*) mul_tables_compare::kc_sqr#1 < (byte*~) mul_tables_compare::$9 + if((boolean~) mul_tables_compare::$10) goto mul_tables_compare::@1 + to:mul_tables_compare::@5 mul_tables_compare::@3: scope:[mul_tables_compare] from mul_tables_compare::@1 - (byte*) mul_tables_compare::kc_sqr#8 ← phi( mul_tables_compare::@1/(byte*) mul_tables_compare::kc_sqr#2 ) - (byte*) mul_tables_compare::asm_sqr#6 ← phi( mul_tables_compare::@1/(byte*) mul_tables_compare::asm_sqr#2 ) - (byte*) char_cursor#47 ← phi( mul_tables_compare::@1/(byte*) char_cursor#46 ) - (byte*) BGCOL#2 ← phi( mul_tables_compare::@1/(byte*) BGCOL#4 ) + (byte*) line_cursor#48 ← phi( mul_tables_compare::@1/(byte*) line_cursor#43 ) + (byte*) mul_tables_compare::kc_sqr#7 ← phi( mul_tables_compare::@1/(byte*) mul_tables_compare::kc_sqr#2 ) + (byte*) mul_tables_compare::asm_sqr#5 ← phi( mul_tables_compare::@1/(byte*) mul_tables_compare::asm_sqr#2 ) + (byte*) char_cursor#66 ← phi( mul_tables_compare::@1/(byte*) char_cursor#73 ) + (byte*) BGCOL#2 ← phi( mul_tables_compare::@1/(byte*) BGCOL#5 ) *((byte*) BGCOL#2) ← (byte/signed byte/word/signed word) 2 - call print_cls param-assignment - to:mul_tables_compare::@6 -mul_tables_compare::@6: scope:[mul_tables_compare] from mul_tables_compare::@3 - (byte*) mul_tables_compare::kc_sqr#7 ← phi( mul_tables_compare::@3/(byte*) mul_tables_compare::kc_sqr#8 ) - (byte*) mul_tables_compare::asm_sqr#5 ← phi( mul_tables_compare::@3/(byte*) mul_tables_compare::asm_sqr#6 ) - (byte*) char_cursor#41 ← phi( mul_tables_compare::@3/(byte*) char_cursor#47 ) (byte*) print_str::str#1 ← (const string) mul_tables_compare::str call print_str param-assignment + to:mul_tables_compare::@6 +mul_tables_compare::@6: scope:[mul_tables_compare] from mul_tables_compare::@3 + (byte*) line_cursor#44 ← phi( mul_tables_compare::@3/(byte*) line_cursor#48 ) + (byte*) mul_tables_compare::kc_sqr#6 ← phi( mul_tables_compare::@3/(byte*) mul_tables_compare::kc_sqr#7 ) + (byte*) mul_tables_compare::asm_sqr#4 ← phi( mul_tables_compare::@3/(byte*) mul_tables_compare::asm_sqr#5 ) + (byte*) char_cursor#46 ← phi( mul_tables_compare::@3/(byte*) char_cursor#2 ) + (byte*) char_cursor#16 ← (byte*) char_cursor#46 + (word~) mul_tables_compare::$3 ← ((word)) (byte*) mul_tables_compare::asm_sqr#4 + (word) print_word::w#0 ← (word~) mul_tables_compare::$3 + call print_word param-assignment to:mul_tables_compare::@7 mul_tables_compare::@7: scope:[mul_tables_compare] from mul_tables_compare::@6 - (byte*) mul_tables_compare::kc_sqr#6 ← phi( mul_tables_compare::@6/(byte*) mul_tables_compare::kc_sqr#7 ) - (byte*) mul_tables_compare::asm_sqr#4 ← phi( mul_tables_compare::@6/(byte*) mul_tables_compare::asm_sqr#5 ) - (byte*) char_cursor#31 ← phi( mul_tables_compare::@6/(byte*) char_cursor#2 ) - (byte*) char_cursor#13 ← (byte*) char_cursor#31 - (word~) mul_tables_compare::$4 ← ((word)) (byte*) mul_tables_compare::asm_sqr#4 - (word) print_word::w#0 ← (word~) mul_tables_compare::$4 - call print_word param-assignment - to:mul_tables_compare::@8 -mul_tables_compare::@8: scope:[mul_tables_compare] from mul_tables_compare::@7 - (byte*) mul_tables_compare::kc_sqr#5 ← phi( mul_tables_compare::@7/(byte*) mul_tables_compare::kc_sqr#6 ) - (byte*) char_cursor#32 ← phi( mul_tables_compare::@7/(byte*) char_cursor#5 ) - (byte*) char_cursor#14 ← (byte*) char_cursor#32 + (byte*) line_cursor#37 ← phi( mul_tables_compare::@6/(byte*) line_cursor#44 ) + (byte*) mul_tables_compare::kc_sqr#5 ← phi( mul_tables_compare::@6/(byte*) mul_tables_compare::kc_sqr#6 ) + (byte*) char_cursor#47 ← phi( mul_tables_compare::@6/(byte*) char_cursor#7 ) + (byte*) char_cursor#17 ← (byte*) char_cursor#47 (byte*) print_str::str#2 ← (const string) mul_tables_compare::str1 call print_str param-assignment + to:mul_tables_compare::@8 +mul_tables_compare::@8: scope:[mul_tables_compare] from mul_tables_compare::@7 + (byte*) line_cursor#30 ← phi( mul_tables_compare::@7/(byte*) line_cursor#37 ) + (byte*) mul_tables_compare::kc_sqr#4 ← phi( mul_tables_compare::@7/(byte*) mul_tables_compare::kc_sqr#5 ) + (byte*) char_cursor#48 ← phi( mul_tables_compare::@7/(byte*) char_cursor#2 ) + (byte*) char_cursor#18 ← (byte*) char_cursor#48 + (word~) mul_tables_compare::$6 ← ((word)) (byte*) mul_tables_compare::kc_sqr#4 + (word) print_word::w#1 ← (word~) mul_tables_compare::$6 + call print_word param-assignment to:mul_tables_compare::@9 mul_tables_compare::@9: scope:[mul_tables_compare] from mul_tables_compare::@8 - (byte*) mul_tables_compare::kc_sqr#4 ← phi( mul_tables_compare::@8/(byte*) mul_tables_compare::kc_sqr#5 ) - (byte*) char_cursor#33 ← phi( mul_tables_compare::@8/(byte*) char_cursor#2 ) - (byte*) char_cursor#15 ← (byte*) char_cursor#33 - (word~) mul_tables_compare::$7 ← ((word)) (byte*) mul_tables_compare::kc_sqr#4 - (word) print_word::w#1 ← (word~) mul_tables_compare::$7 - call print_word param-assignment - to:mul_tables_compare::@10 -mul_tables_compare::@10: scope:[mul_tables_compare] from mul_tables_compare::@9 - (byte*) char_cursor#34 ← phi( mul_tables_compare::@9/(byte*) char_cursor#5 ) - (byte*) char_cursor#16 ← (byte*) char_cursor#34 + (byte*) line_cursor#24 ← phi( mul_tables_compare::@8/(byte*) line_cursor#30 ) + (byte*) char_cursor#49 ← phi( mul_tables_compare::@8/(byte*) char_cursor#7 ) + (byte*) char_cursor#19 ← (byte*) char_cursor#49 to:mul_tables_compare::@return -mul_tables_compare::@return: scope:[mul_tables_compare] from mul_tables_compare::@10 mul_tables_compare::@2 - (byte*) char_cursor#35 ← phi( mul_tables_compare::@10/(byte*) char_cursor#16 mul_tables_compare::@2/(byte*) char_cursor#42 ) - (byte*) char_cursor#17 ← (byte*) char_cursor#35 +mul_tables_compare::@return: scope:[mul_tables_compare] from mul_tables_compare::@11 mul_tables_compare::@9 + (byte*) line_cursor#17 ← phi( mul_tables_compare::@11/(byte*) line_cursor#7 mul_tables_compare::@9/(byte*) line_cursor#24 ) + (byte*) char_cursor#50 ← phi( mul_tables_compare::@11/(byte*) char_cursor#22 mul_tables_compare::@9/(byte*) char_cursor#19 ) + (byte*) char_cursor#20 ← (byte*) char_cursor#50 + (byte*) line_cursor#6 ← (byte*) line_cursor#17 return to:@return -@10: scope:[] from @8 - (byte*) BGCOL#8 ← phi( @8/(byte*) BGCOL#9 ) - (byte*) char_cursor#43 ← phi( @8/(byte*) char_cursor#48 ) +mul_tables_compare::@5: scope:[mul_tables_compare] from mul_tables_compare::@2 + (byte*) line_cursor#31 ← phi( mul_tables_compare::@2/(byte*) line_cursor#38 ) + (byte*) char_cursor#67 ← phi( mul_tables_compare::@2/(byte*) char_cursor#74 ) + (byte*) print_str::str#3 ← (const string) mul_tables_compare::str2 + call print_str param-assignment + to:mul_tables_compare::@10 +mul_tables_compare::@10: scope:[mul_tables_compare] from mul_tables_compare::@5 + (byte*) line_cursor#25 ← phi( mul_tables_compare::@5/(byte*) line_cursor#31 ) + (byte*) char_cursor#51 ← phi( mul_tables_compare::@5/(byte*) char_cursor#2 ) + (byte*) char_cursor#21 ← (byte*) char_cursor#51 + call print_ln param-assignment + to:mul_tables_compare::@11 +mul_tables_compare::@11: scope:[mul_tables_compare] from mul_tables_compare::@10 + (byte*) char_cursor#52 ← phi( mul_tables_compare::@10/(byte*) char_cursor#4 ) + (byte*) line_cursor#18 ← phi( mul_tables_compare::@10/(byte*) line_cursor#2 ) + (byte*) line_cursor#7 ← (byte*) line_cursor#18 + (byte*) char_cursor#22 ← (byte*) char_cursor#52 + to:mul_tables_compare::@return +mul_results_compare: scope:[mul_results_compare] from main::@4 + (byte*) line_cursor#54 ← phi( main::@4/(byte*) line_cursor#3 ) + (byte*) char_cursor#87 ← phi( main::@4/(byte*) char_cursor#13 ) + (byte*) BGCOL#18 ← phi( main::@4/(byte*) BGCOL#20 ) + (byte) mul_results_compare::a#0 ← (byte/signed byte/word/signed word) 0 + to:mul_results_compare::@1 +mul_results_compare::@1: scope:[mul_results_compare] from mul_results_compare mul_results_compare::@6 + (byte*) line_cursor#53 ← phi( mul_results_compare/(byte*) line_cursor#54 mul_results_compare::@6/(byte*) line_cursor#40 ) + (byte*) char_cursor#86 ← phi( mul_results_compare/(byte*) char_cursor#87 mul_results_compare::@6/(byte*) char_cursor#76 ) + (byte*) BGCOL#15 ← phi( mul_results_compare/(byte*) BGCOL#18 mul_results_compare::@6/(byte*) BGCOL#19 ) + (byte) mul_results_compare::a#5 ← phi( mul_results_compare/(byte) mul_results_compare::a#0 mul_results_compare::@6/(byte) mul_results_compare::a#1 ) + (byte) mul_results_compare::b#0 ← (byte/signed byte/word/signed word) 0 + to:mul_results_compare::@2 +mul_results_compare::@2: scope:[mul_results_compare] from mul_results_compare::@1 mul_results_compare::@3 + (byte*) line_cursor#52 ← phi( mul_results_compare::@1/(byte*) line_cursor#53 mul_results_compare::@3/(byte*) line_cursor#46 ) + (byte*) char_cursor#85 ← phi( mul_results_compare::@1/(byte*) char_cursor#86 mul_results_compare::@3/(byte*) char_cursor#82 ) + (byte*) BGCOL#13 ← phi( mul_results_compare::@1/(byte*) BGCOL#15 mul_results_compare::@3/(byte*) BGCOL#16 ) + (byte) mul_results_compare::b#2 ← phi( mul_results_compare::@1/(byte) mul_results_compare::b#0 mul_results_compare::@3/(byte) mul_results_compare::b#1 ) + (byte) mul_results_compare::a#2 ← phi( mul_results_compare::@1/(byte) mul_results_compare::a#5 mul_results_compare::@3/(byte) mul_results_compare::a#6 ) + (byte) slow_multiply::a#0 ← (byte) mul_results_compare::a#2 + (byte) slow_multiply::b#0 ← (byte) mul_results_compare::b#2 + call slow_multiply param-assignment + (word) slow_multiply::return#2 ← (word) slow_multiply::return#1 + to:mul_results_compare::@8 +mul_results_compare::@8: scope:[mul_results_compare] from mul_results_compare::@2 + (byte*) line_cursor#51 ← phi( mul_results_compare::@2/(byte*) line_cursor#52 ) + (byte*) char_cursor#81 ← phi( mul_results_compare::@2/(byte*) char_cursor#85 ) + (byte*) BGCOL#9 ← phi( mul_results_compare::@2/(byte*) BGCOL#13 ) + (byte) mul_results_compare::b#3 ← phi( mul_results_compare::@2/(byte) mul_results_compare::b#2 ) + (byte) mul_results_compare::a#3 ← phi( mul_results_compare::@2/(byte) mul_results_compare::a#2 ) + (word) slow_multiply::return#4 ← phi( mul_results_compare::@2/(word) slow_multiply::return#2 ) + (word~) mul_results_compare::$0 ← (word) slow_multiply::return#4 + (word) mul_results_compare::ms#0 ← (word~) mul_results_compare::$0 + (byte) asm_multiply::a#0 ← (byte) mul_results_compare::a#3 + (byte) asm_multiply::b#0 ← (byte) mul_results_compare::b#3 + call asm_multiply param-assignment + (word) asm_multiply::return#2 ← (word) asm_multiply::return#1 + to:mul_results_compare::@9 +mul_results_compare::@9: scope:[mul_results_compare] from mul_results_compare::@8 + (byte*) line_cursor#49 ← phi( mul_results_compare::@8/(byte*) line_cursor#51 ) + (byte*) char_cursor#75 ← phi( mul_results_compare::@8/(byte*) char_cursor#81 ) + (byte) mul_results_compare::a#7 ← phi( mul_results_compare::@8/(byte) mul_results_compare::a#3 ) + (byte*) BGCOL#6 ← phi( mul_results_compare::@8/(byte*) BGCOL#9 ) + (byte) mul_results_compare::b#5 ← phi( mul_results_compare::@8/(byte) mul_results_compare::b#3 ) + (word) mul_results_compare::ms#1 ← phi( mul_results_compare::@8/(word) mul_results_compare::ms#0 ) + (word) asm_multiply::return#4 ← phi( mul_results_compare::@8/(word) asm_multiply::return#2 ) + (word~) mul_results_compare::$1 ← (word) asm_multiply::return#4 + (word) mul_results_compare::ma#0 ← (word~) mul_results_compare::$1 + (boolean~) mul_results_compare::$2 ← (word) mul_results_compare::ms#1 != (word) mul_results_compare::ma#0 + (boolean~) mul_results_compare::$3 ← ! (boolean~) mul_results_compare::$2 + if((boolean~) mul_results_compare::$3) goto mul_results_compare::@3 + to:mul_results_compare::@4 +mul_results_compare::@3: scope:[mul_results_compare] from mul_results_compare::@9 + (byte*) line_cursor#46 ← phi( mul_results_compare::@9/(byte*) line_cursor#49 ) + (byte*) BGCOL#16 ← phi( mul_results_compare::@9/(byte*) BGCOL#6 ) + (byte*) char_cursor#82 ← phi( mul_results_compare::@9/(byte*) char_cursor#75 ) + (byte) mul_results_compare::a#6 ← phi( mul_results_compare::@9/(byte) mul_results_compare::a#7 ) + (byte) mul_results_compare::b#4 ← phi( mul_results_compare::@9/(byte) mul_results_compare::b#5 ) + (byte) mul_results_compare::b#1 ← ++ (byte) mul_results_compare::b#4 + (boolean~) mul_results_compare::$8 ← (byte) mul_results_compare::b#1 != (byte/signed byte/word/signed word) 0 + if((boolean~) mul_results_compare::$8) goto mul_results_compare::@2 + to:mul_results_compare::@6 +mul_results_compare::@4: scope:[mul_results_compare] from mul_results_compare::@9 + (byte*) line_cursor#50 ← phi( mul_results_compare::@9/(byte*) line_cursor#49 ) + (word) mul_results_compare::ma#4 ← phi( mul_results_compare::@9/(word) mul_results_compare::ma#0 ) + (word) mul_results_compare::ms#3 ← phi( mul_results_compare::@9/(word) mul_results_compare::ms#1 ) + (byte*) char_cursor#68 ← phi( mul_results_compare::@9/(byte*) char_cursor#75 ) + (byte*) BGCOL#3 ← phi( mul_results_compare::@9/(byte*) BGCOL#6 ) + *((byte*) BGCOL#3) ← (byte/signed byte/word/signed word) 2 + (byte*) print_str::str#4 ← (const string) mul_results_compare::str + call print_str param-assignment + to:mul_results_compare::@10 +mul_results_compare::@10: scope:[mul_results_compare] from mul_results_compare::@4 + (byte*) line_cursor#45 ← phi( mul_results_compare::@4/(byte*) line_cursor#50 ) + (word) mul_results_compare::ma#3 ← phi( mul_results_compare::@4/(word) mul_results_compare::ma#4 ) + (word) mul_results_compare::ms#2 ← phi( mul_results_compare::@4/(word) mul_results_compare::ms#3 ) + (byte*) char_cursor#53 ← phi( mul_results_compare::@4/(byte*) char_cursor#2 ) + (byte*) char_cursor#23 ← (byte*) char_cursor#53 + (word) print_word::w#2 ← (word) mul_results_compare::ms#2 + call print_word param-assignment + to:mul_results_compare::@11 +mul_results_compare::@11: scope:[mul_results_compare] from mul_results_compare::@10 + (byte*) line_cursor#39 ← phi( mul_results_compare::@10/(byte*) line_cursor#45 ) + (word) mul_results_compare::ma#2 ← phi( mul_results_compare::@10/(word) mul_results_compare::ma#3 ) + (byte*) char_cursor#54 ← phi( mul_results_compare::@10/(byte*) char_cursor#7 ) + (byte*) char_cursor#24 ← (byte*) char_cursor#54 + (byte*) print_str::str#5 ← (const string) mul_results_compare::str1 + call print_str param-assignment + to:mul_results_compare::@12 +mul_results_compare::@12: scope:[mul_results_compare] from mul_results_compare::@11 + (byte*) line_cursor#32 ← phi( mul_results_compare::@11/(byte*) line_cursor#39 ) + (word) mul_results_compare::ma#1 ← phi( mul_results_compare::@11/(word) mul_results_compare::ma#2 ) + (byte*) char_cursor#55 ← phi( mul_results_compare::@11/(byte*) char_cursor#2 ) + (byte*) char_cursor#25 ← (byte*) char_cursor#55 + (word) print_word::w#3 ← (word) mul_results_compare::ma#1 + call print_word param-assignment + to:mul_results_compare::@13 +mul_results_compare::@13: scope:[mul_results_compare] from mul_results_compare::@12 + (byte*) line_cursor#26 ← phi( mul_results_compare::@12/(byte*) line_cursor#32 ) + (byte*) char_cursor#56 ← phi( mul_results_compare::@12/(byte*) char_cursor#7 ) + (byte*) char_cursor#26 ← (byte*) char_cursor#56 + to:mul_results_compare::@return +mul_results_compare::@return: scope:[mul_results_compare] from mul_results_compare::@13 mul_results_compare::@15 + (byte*) line_cursor#19 ← phi( mul_results_compare::@13/(byte*) line_cursor#26 mul_results_compare::@15/(byte*) line_cursor#9 ) + (byte*) char_cursor#57 ← phi( mul_results_compare::@13/(byte*) char_cursor#26 mul_results_compare::@15/(byte*) char_cursor#29 ) + (byte*) char_cursor#27 ← (byte*) char_cursor#57 + (byte*) line_cursor#8 ← (byte*) line_cursor#19 + return + to:@return +mul_results_compare::@6: scope:[mul_results_compare] from mul_results_compare::@3 + (byte*) BGCOL#19 ← phi( mul_results_compare::@3/(byte*) BGCOL#16 ) + (byte*) line_cursor#40 ← phi( mul_results_compare::@3/(byte*) line_cursor#46 ) + (byte*) char_cursor#76 ← phi( mul_results_compare::@3/(byte*) char_cursor#82 ) + (byte) mul_results_compare::a#4 ← phi( mul_results_compare::@3/(byte) mul_results_compare::a#6 ) + (byte) mul_results_compare::a#1 ← ++ (byte) mul_results_compare::a#4 + (boolean~) mul_results_compare::$9 ← (byte) mul_results_compare::a#1 != (byte/signed byte/word/signed word) 0 + if((boolean~) mul_results_compare::$9) goto mul_results_compare::@1 + to:mul_results_compare::@7 +mul_results_compare::@7: scope:[mul_results_compare] from mul_results_compare::@6 + (byte*) line_cursor#33 ← phi( mul_results_compare::@6/(byte*) line_cursor#40 ) + (byte*) char_cursor#69 ← phi( mul_results_compare::@6/(byte*) char_cursor#76 ) + (byte*) print_str::str#6 ← (const string) mul_results_compare::str2 + call print_str param-assignment + to:mul_results_compare::@14 +mul_results_compare::@14: scope:[mul_results_compare] from mul_results_compare::@7 + (byte*) line_cursor#27 ← phi( mul_results_compare::@7/(byte*) line_cursor#33 ) + (byte*) char_cursor#58 ← phi( mul_results_compare::@7/(byte*) char_cursor#2 ) + (byte*) char_cursor#28 ← (byte*) char_cursor#58 + call print_ln param-assignment + to:mul_results_compare::@15 +mul_results_compare::@15: scope:[mul_results_compare] from mul_results_compare::@14 + (byte*) char_cursor#59 ← phi( mul_results_compare::@14/(byte*) char_cursor#4 ) + (byte*) line_cursor#20 ← phi( mul_results_compare::@14/(byte*) line_cursor#2 ) + (byte*) line_cursor#9 ← (byte*) line_cursor#20 + (byte*) char_cursor#29 ← (byte*) char_cursor#59 + to:mul_results_compare::@return +@13: scope:[] from @9 + (byte*) line_cursor#28 ← phi( @9/(byte*) line_cursor#34 ) + (byte*) char_cursor#70 ← phi( @9/(byte*) char_cursor#77 ) + (byte*) BGCOL#4 ← phi( @9/(byte*) BGCOL#10 ) call main param-assignment - to:@11 -@11: scope:[] from @10 - (byte*) char_cursor#36 ← phi( @10/(byte*) char_cursor#12 ) - (byte*) char_cursor#18 ← (byte*) char_cursor#36 + to:@14 +@14: scope:[] from @13 + (byte*) line_cursor#21 ← phi( @13/(byte*) line_cursor#5 ) + (byte*) char_cursor#60 ← phi( @13/(byte*) char_cursor#15 ) + (byte*) char_cursor#30 ← (byte*) char_cursor#60 + (byte*) line_cursor#10 ← (byte*) line_cursor#21 to:@end -@end: scope:[] from @11 +@end: scope:[] from @14 SYMBOL TABLE SSA -(label) @10 -(label) @11 +(label) @13 +(label) @14 (label) @6 -(label) @7 (label) @8 +(label) @9 (label) @begin (label) @end (byte*) BGCOL (byte*) BGCOL#0 (byte*) BGCOL#1 (byte*) BGCOL#10 +(byte*) BGCOL#11 +(byte*) BGCOL#12 +(byte*) BGCOL#13 +(byte*) BGCOL#14 +(byte*) BGCOL#15 +(byte*) BGCOL#16 +(byte*) BGCOL#17 +(byte*) BGCOL#18 +(byte*) BGCOL#19 (byte*) BGCOL#2 +(byte*) BGCOL#20 (byte*) BGCOL#3 (byte*) BGCOL#4 (byte*) BGCOL#5 @@ -1139,6 +1697,24 @@ SYMBOL TABLE SSA (byte[512]) asm_mul_sqr2_hi#0 (byte[512]) asm_mul_sqr2_lo (byte[512]) asm_mul_sqr2_lo#0 +(word()) asm_multiply((byte) asm_multiply::a , (byte) asm_multiply::b) +(label) asm_multiply::@return +(byte) asm_multiply::a +(byte) asm_multiply::a#0 +(byte) asm_multiply::a#1 +(byte) asm_multiply::b +(byte) asm_multiply::b#0 +(byte) asm_multiply::b#1 +(byte*) asm_multiply::memA +(byte*) asm_multiply::memA#0 +(byte*) asm_multiply::memB +(byte*) asm_multiply::memB#0 +(word) asm_multiply::return +(word) asm_multiply::return#0 +(word) asm_multiply::return#1 +(word) asm_multiply::return#2 +(word) asm_multiply::return#3 +(word) asm_multiply::return#4 (byte*) char_cursor (byte*) char_cursor#0 (byte*) char_cursor#1 @@ -1189,9 +1765,44 @@ SYMBOL TABLE SSA (byte*) char_cursor#50 (byte*) char_cursor#51 (byte*) char_cursor#52 +(byte*) char_cursor#53 +(byte*) char_cursor#54 +(byte*) char_cursor#55 +(byte*) char_cursor#56 +(byte*) char_cursor#57 +(byte*) char_cursor#58 +(byte*) char_cursor#59 (byte*) char_cursor#6 +(byte*) char_cursor#60 +(byte*) char_cursor#61 +(byte*) char_cursor#62 +(byte*) char_cursor#63 +(byte*) char_cursor#64 +(byte*) char_cursor#65 +(byte*) char_cursor#66 +(byte*) char_cursor#67 +(byte*) char_cursor#68 +(byte*) char_cursor#69 (byte*) char_cursor#7 +(byte*) char_cursor#70 +(byte*) char_cursor#71 +(byte*) char_cursor#72 +(byte*) char_cursor#73 +(byte*) char_cursor#74 +(byte*) char_cursor#75 +(byte*) char_cursor#76 +(byte*) char_cursor#77 +(byte*) char_cursor#78 +(byte*) char_cursor#79 (byte*) char_cursor#8 +(byte*) char_cursor#80 +(byte*) char_cursor#81 +(byte*) char_cursor#82 +(byte*) char_cursor#83 +(byte*) char_cursor#84 +(byte*) char_cursor#85 +(byte*) char_cursor#86 +(byte*) char_cursor#87 (byte*) char_cursor#9 (void()) init_mul_tables() (byte*~) init_mul_tables::$0 @@ -1284,11 +1895,119 @@ SYMBOL TABLE SSA (byte*) init_mul_tables_asm::mem#0 (byte*) line_cursor (byte*) line_cursor#0 +(byte*) line_cursor#1 +(byte*) line_cursor#10 +(byte*) line_cursor#11 +(byte*) line_cursor#12 +(byte*) line_cursor#13 +(byte*) line_cursor#14 +(byte*) line_cursor#15 +(byte*) line_cursor#16 +(byte*) line_cursor#17 +(byte*) line_cursor#18 +(byte*) line_cursor#19 +(byte*) line_cursor#2 +(byte*) line_cursor#20 +(byte*) line_cursor#21 +(byte*) line_cursor#22 +(byte*) line_cursor#23 +(byte*) line_cursor#24 +(byte*) line_cursor#25 +(byte*) line_cursor#26 +(byte*) line_cursor#27 +(byte*) line_cursor#28 +(byte*) line_cursor#29 +(byte*) line_cursor#3 +(byte*) line_cursor#30 +(byte*) line_cursor#31 +(byte*) line_cursor#32 +(byte*) line_cursor#33 +(byte*) line_cursor#34 +(byte*) line_cursor#35 +(byte*) line_cursor#36 +(byte*) line_cursor#37 +(byte*) line_cursor#38 +(byte*) line_cursor#39 +(byte*) line_cursor#4 +(byte*) line_cursor#40 +(byte*) line_cursor#41 +(byte*) line_cursor#42 +(byte*) line_cursor#43 +(byte*) line_cursor#44 +(byte*) line_cursor#45 +(byte*) line_cursor#46 +(byte*) line_cursor#47 +(byte*) line_cursor#48 +(byte*) line_cursor#49 +(byte*) line_cursor#5 +(byte*) line_cursor#50 +(byte*) line_cursor#51 +(byte*) line_cursor#52 +(byte*) line_cursor#53 +(byte*) line_cursor#54 +(byte*) line_cursor#6 +(byte*) line_cursor#7 +(byte*) line_cursor#8 +(byte*) line_cursor#9 (void()) main() (label) main::@1 (label) main::@2 (label) main::@3 +(label) main::@4 +(label) main::@5 (label) main::@return +(void()) mul_results_compare() +(word~) mul_results_compare::$0 +(word~) mul_results_compare::$1 +(boolean~) mul_results_compare::$2 +(boolean~) mul_results_compare::$3 +(boolean~) mul_results_compare::$8 +(boolean~) mul_results_compare::$9 +(label) mul_results_compare::@1 +(label) mul_results_compare::@10 +(label) mul_results_compare::@11 +(label) mul_results_compare::@12 +(label) mul_results_compare::@13 +(label) mul_results_compare::@14 +(label) mul_results_compare::@15 +(label) mul_results_compare::@2 +(label) mul_results_compare::@3 +(label) mul_results_compare::@4 +(label) mul_results_compare::@6 +(label) mul_results_compare::@7 +(label) mul_results_compare::@8 +(label) mul_results_compare::@9 +(label) mul_results_compare::@return +(byte) mul_results_compare::a +(byte) mul_results_compare::a#0 +(byte) mul_results_compare::a#1 +(byte) mul_results_compare::a#2 +(byte) mul_results_compare::a#3 +(byte) mul_results_compare::a#4 +(byte) mul_results_compare::a#5 +(byte) mul_results_compare::a#6 +(byte) mul_results_compare::a#7 +(byte) mul_results_compare::b +(byte) mul_results_compare::b#0 +(byte) mul_results_compare::b#1 +(byte) mul_results_compare::b#2 +(byte) mul_results_compare::b#3 +(byte) mul_results_compare::b#4 +(byte) mul_results_compare::b#5 +(word) mul_results_compare::ma +(word) mul_results_compare::ma#0 +(word) mul_results_compare::ma#1 +(word) mul_results_compare::ma#2 +(word) mul_results_compare::ma#3 +(word) mul_results_compare::ma#4 +(word) mul_results_compare::ms +(word) mul_results_compare::ms#0 +(word) mul_results_compare::ms#1 +(word) mul_results_compare::ms#2 +(word) mul_results_compare::ms#3 +(const string) mul_results_compare::str = (string) "multiply mismatch slow:@" +(const string) mul_results_compare::str1 = (string) " / fast asm:" +(const string) mul_results_compare::str2 = (string) "multiply results match!@" (byte[512]) mul_sqr1_hi (byte[512]) mul_sqr1_hi#0 (byte[512]) mul_sqr1_lo @@ -1300,15 +2019,17 @@ SYMBOL TABLE SSA (void()) mul_tables_compare() (boolean~) mul_tables_compare::$0 (boolean~) mul_tables_compare::$1 -(byte*~) mul_tables_compare::$10 -(boolean~) mul_tables_compare::$11 -(word~) mul_tables_compare::$4 -(word~) mul_tables_compare::$7 -(word/signed word~) mul_tables_compare::$9 +(boolean~) mul_tables_compare::$10 +(word~) mul_tables_compare::$3 +(word~) mul_tables_compare::$6 +(word/signed word~) mul_tables_compare::$8 +(byte*~) mul_tables_compare::$9 (label) mul_tables_compare::@1 (label) mul_tables_compare::@10 +(label) mul_tables_compare::@11 (label) mul_tables_compare::@2 (label) mul_tables_compare::@3 +(label) mul_tables_compare::@5 (label) mul_tables_compare::@6 (label) mul_tables_compare::@7 (label) mul_tables_compare::@8 @@ -1321,7 +2042,6 @@ SYMBOL TABLE SSA (byte*) mul_tables_compare::asm_sqr#3 (byte*) mul_tables_compare::asm_sqr#4 (byte*) mul_tables_compare::asm_sqr#5 -(byte*) mul_tables_compare::asm_sqr#6 (byte*) mul_tables_compare::kc_sqr (byte*) mul_tables_compare::kc_sqr#0 (byte*) mul_tables_compare::kc_sqr#1 @@ -1331,9 +2051,9 @@ SYMBOL TABLE SSA (byte*) mul_tables_compare::kc_sqr#5 (byte*) mul_tables_compare::kc_sqr#6 (byte*) mul_tables_compare::kc_sqr#7 -(byte*) mul_tables_compare::kc_sqr#8 -(const string) mul_tables_compare::str = (string) "mul table mismatch at @" +(const string) mul_tables_compare::str = (string) "multiply table mismatch at @" (const string) mul_tables_compare::str1 = (string) " / @" +(const string) mul_tables_compare::str2 = (string) "multiply tables match!@" (void()) print_byte((byte) print_byte::b) (byte~) print_byte::$0 (byte~) print_byte::$2 @@ -1362,6 +2082,12 @@ SYMBOL TABLE SSA (byte*) print_cls::sc#0 (byte*) print_cls::sc#1 (byte*) print_cls::sc#2 +(void()) print_ln() +(byte*~) print_ln::$0 +(boolean~) print_ln::$1 +(label) print_ln::@1 +(label) print_ln::@2 +(label) print_ln::@return (void()) print_str((byte*) print_str::str) (boolean~) print_str::$0 (label) print_str::@1 @@ -1374,6 +2100,10 @@ SYMBOL TABLE SSA (byte*) print_str::str#3 (byte*) print_str::str#4 (byte*) print_str::str#5 +(byte*) print_str::str#6 +(byte*) print_str::str#7 +(byte*) print_str::str#8 +(byte*) print_str::str#9 (void()) print_word((word) print_word::w) (byte~) print_word::$0 (byte~) print_word::$2 @@ -1385,54 +2115,140 @@ SYMBOL TABLE SSA (word) print_word::w#1 (word) print_word::w#2 (word) print_word::w#3 +(word) print_word::w#4 +(word) print_word::w#5 +(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 OPTIMIZING CONTROL FLOW GRAPH +Inversing boolean not (boolean~) slow_multiply::$1 ← (byte) slow_multiply::a#1 <= (byte/signed byte/word/signed word) 0 from (boolean~) slow_multiply::$0 ← (byte) slow_multiply::a#1 > (byte/signed byte/word/signed word) 0 Inversing boolean not (boolean~) init_mul_tables::$4 ← (byte~) init_mul_tables::$2 != (byte/signed byte/word/signed word) 0 from (boolean~) init_mul_tables::$3 ← (byte~) init_mul_tables::$2 == (byte/signed byte/word/signed word) 0 Inversing boolean not (boolean~) init_mul_tables::$14 ← (byte) init_mul_tables::x_255#1 != (byte/signed byte/word/signed word) 0 from (boolean~) init_mul_tables::$13 ← (byte) init_mul_tables::x_255#1 == (byte/signed byte/word/signed word) 0 Inversing boolean not (boolean~) mul_tables_compare::$1 ← *((byte*) mul_tables_compare::kc_sqr#2) == *((byte*) mul_tables_compare::asm_sqr#2) from (boolean~) mul_tables_compare::$0 ← *((byte*) mul_tables_compare::kc_sqr#2) != *((byte*) mul_tables_compare::asm_sqr#2) +Inversing boolean not (boolean~) mul_results_compare::$3 ← (word) mul_results_compare::ms#1 == (word) mul_results_compare::ma#0 from (boolean~) mul_results_compare::$2 ← (word) mul_results_compare::ms#1 != (word) mul_results_compare::ma#0 Succesful SSA optimization Pass2UnaryNotSimplification -Not aliassing across scopes: print_str::str#5 print_str::str#1 -Not aliassing across scopes: char_cursor#44 char_cursor#41 -Not aliassing across scopes: print_word::w#2 print_word::w#0 -Not aliassing across scopes: char_cursor#38 char_cursor#13 -Not aliassing across scopes: char_cursor#21 char_cursor#8 -Not aliassing across scopes: char_cursor#22 char_cursor#8 +Not aliassing across scopes: print_str::str#9 print_str::str#5 +Not aliassing across scopes: char_cursor#71 char_cursor#24 +Not aliassing across scopes: line_cursor#22 line_cursor#27 +Not aliassing across scopes: char_cursor#62 char_cursor#28 +Not aliassing across scopes: print_word::w#4 print_word::w#2 +Not aliassing across scopes: char_cursor#63 char_cursor#23 +Not aliassing across scopes: char_cursor#35 char_cursor#10 +Not aliassing across scopes: char_cursor#36 char_cursor#10 Not aliassing across scopes: print_byte::b#2 print_byte::b#0 -Not aliassing across scopes: char_cursor#39 char_cursor#38 -Not aliassing across scopes: char_cursor#24 char_cursor#10 -Not aliassing across scopes: char_cursor#25 char_cursor#10 +Not aliassing across scopes: char_cursor#64 char_cursor#63 +Not aliassing across scopes: char_cursor#38 char_cursor#12 +Not aliassing across scopes: char_cursor#39 char_cursor#12 Not aliassing across scopes: print_char::ch#2 print_char::ch#0 -Not aliassing across scopes: char_cursor#27 char_cursor#39 -Not aliassing across scopes: char_cursor#49 char_cursor#43 -Not aliassing across scopes: BGCOL#7 BGCOL#8 -Not aliassing across scopes: char_cursor#29 char_cursor#17 +Not aliassing across scopes: char_cursor#41 char_cursor#64 +Not aliassing across scopes: BGCOL#1 BGCOL#4 +Not aliassing across scopes: char_cursor#83 char_cursor#70 +Not aliassing across scopes: line_cursor#41 line_cursor#28 +Not aliassing across scopes: char_cursor#43 char_cursor#20 +Not aliassing across scopes: line_cursor#14 line_cursor#6 +Not aliassing across scopes: char_cursor#44 char_cursor#27 +Not aliassing across scopes: line_cursor#15 line_cursor#8 +Not aliassing across scopes: 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: init_mul_tables::sqr2_hi#0 mul_sqr2_hi#0 Not aliassing across scopes: init_mul_tables::sqr2_lo#0 mul_sqr2_lo#0 -Not aliassing across scopes: BGCOL#1 BGCOL#3 -Not aliassing across scopes: char_cursor#51 char_cursor#40 +Not aliassing across scopes: asm_multiply::a#1 asm_multiply::a#0 +Not aliassing across scopes: asm_multiply::b#1 asm_multiply::b#0 +Not aliassing across scopes: BGCOL#7 BGCOL#12 +Not aliassing across scopes: char_cursor#80 char_cursor#65 +Not aliassing across scopes: line_cursor#47 line_cursor#23 Not aliassing across scopes: mul_tables_compare::asm_sqr#0 asm_mul_sqr1_lo#0 Not aliassing across scopes: mul_tables_compare::kc_sqr#0 mul_sqr1_lo#0 -Not aliassing across scopes: char_cursor#31 char_cursor#2 -Not aliassing across scopes: char_cursor#32 char_cursor#5 -Not aliassing across scopes: char_cursor#33 char_cursor#2 -Not aliassing across scopes: char_cursor#34 char_cursor#5 -Not aliassing across scopes: char_cursor#36 char_cursor#12 -Alias (byte*) char_cursor#0 = (byte*) line_cursor#0 (byte*) char_cursor#52 (byte*) char_cursor#50 (byte*) char_cursor#48 (byte*) char_cursor#43 -Alias (byte*) print_str::str#3 = (byte*) print_str::str#4 -Alias (byte*) char_cursor#19 = (byte*) char_cursor#37 (byte*) char_cursor#20 (byte*) char_cursor#2 +Not aliassing across scopes: char_cursor#46 char_cursor#2 +Not aliassing across scopes: char_cursor#47 char_cursor#7 +Not aliassing across scopes: char_cursor#48 char_cursor#2 +Not aliassing across scopes: char_cursor#49 char_cursor#7 +Not aliassing across scopes: char_cursor#51 char_cursor#2 +Not aliassing across scopes: line_cursor#18 line_cursor#2 +Not aliassing across scopes: char_cursor#52 char_cursor#4 +Not aliassing across scopes: BGCOL#18 BGCOL#20 +Not aliassing across scopes: char_cursor#87 char_cursor#13 +Not aliassing across scopes: line_cursor#54 line_cursor#3 +Not aliassing across scopes: slow_multiply::a#0 mul_results_compare::a#2 +Not aliassing across scopes: slow_multiply::b#0 mul_results_compare::b#2 +Not aliassing across scopes: slow_multiply::return#2 slow_multiply::return#1 +Not aliassing across scopes: mul_results_compare::$0 slow_multiply::return#4 +Not aliassing across scopes: asm_multiply::a#0 mul_results_compare::a#3 +Not aliassing across scopes: asm_multiply::b#0 mul_results_compare::b#3 +Not aliassing across scopes: asm_multiply::return#2 asm_multiply::return#1 +Not aliassing across scopes: mul_results_compare::$1 asm_multiply::return#4 +Not aliassing across scopes: char_cursor#53 char_cursor#2 +Not aliassing across scopes: print_word::w#2 mul_results_compare::ms#2 +Not aliassing across scopes: char_cursor#54 char_cursor#7 +Not aliassing across scopes: char_cursor#55 char_cursor#2 +Not aliassing across scopes: print_word::w#3 mul_results_compare::ma#1 +Not aliassing across scopes: char_cursor#56 char_cursor#7 +Not aliassing across scopes: char_cursor#58 char_cursor#2 +Not aliassing across scopes: line_cursor#20 line_cursor#2 +Not aliassing across scopes: char_cursor#59 char_cursor#4 +Not aliassing across scopes: char_cursor#60 char_cursor#15 +Not aliassing across scopes: line_cursor#21 line_cursor#5 +Alias (byte*) char_cursor#0 = (byte*) line_cursor#0 (byte*) char_cursor#84 (byte*) line_cursor#42 (byte*) char_cursor#79 (byte*) line_cursor#36 (byte*) char_cursor#77 (byte*) line_cursor#34 (byte*) char_cursor#70 (byte*) line_cursor#28 +Alias (byte*) print_str::str#7 = (byte*) print_str::str#8 +Alias (byte*) char_cursor#2 = (byte*) char_cursor#31 (byte*) char_cursor#61 (byte*) char_cursor#32 +Alias (byte*) line_cursor#1 = (byte*~) print_ln::$0 (byte*) line_cursor#12 (byte*) char_cursor#3 (byte*) line_cursor#13 (byte*) char_cursor#34 (byte*) line_cursor#2 (byte*) char_cursor#4 Alias (byte) print_byte::b#0 = (byte~) print_word::$0 -Alias (word) print_word::w#2 = (word) print_word::w#3 -Alias (byte*) char_cursor#21 = (byte*) char_cursor#3 +Alias (word) print_word::w#4 = (word) print_word::w#5 +Alias (byte*) char_cursor#35 = (byte*) char_cursor#5 Alias (byte) print_byte::b#1 = (byte~) print_word::$2 -Alias (byte*) char_cursor#22 = (byte*) char_cursor#4 (byte*) char_cursor#23 (byte*) char_cursor#5 +Alias (byte*) char_cursor#36 = (byte*) char_cursor#6 (byte*) char_cursor#37 (byte*) char_cursor#7 Alias (byte) print_byte::b#2 = (byte) print_byte::b#3 -Alias (byte*) char_cursor#24 = (byte*) char_cursor#6 -Alias (byte*) char_cursor#25 = (byte*) char_cursor#7 (byte*) char_cursor#26 (byte*) char_cursor#8 -Alias (byte*) char_cursor#10 = (byte*) char_cursor#28 (byte*) char_cursor#9 -Alias (byte*) char_cursor#40 = (byte*) char_cursor#45 (byte*) char_cursor#49 -Alias (byte*) BGCOL#3 = (byte*) BGCOL#5 (byte*) BGCOL#7 -Alias (byte*) char_cursor#11 = (byte*) char_cursor#29 (byte*) char_cursor#30 (byte*) char_cursor#12 -Alias (byte*) BGCOL#0 = (byte*) BGCOL#10 (byte*) BGCOL#9 (byte*) BGCOL#8 +Alias (byte*) char_cursor#38 = (byte*) char_cursor#8 +Alias (byte*) char_cursor#10 = (byte*) char_cursor#9 (byte*) char_cursor#39 (byte*) char_cursor#40 +Alias (byte*) char_cursor#11 = (byte*) char_cursor#42 (byte*) char_cursor#12 +Alias (byte*) char_cursor#65 = (byte*) char_cursor#78 (byte*) char_cursor#83 (byte*) char_cursor#72 +Alias (byte*) line_cursor#23 = (byte*) line_cursor#35 (byte*) line_cursor#41 (byte*) line_cursor#29 +Alias (byte*) BGCOL#1 = (byte*) BGCOL#17 (byte*) BGCOL#14 (byte*) BGCOL#12 (byte*) BGCOL#20 +Alias (byte*) char_cursor#13 = (byte*) char_cursor#43 +Alias (byte*) line_cursor#14 = (byte*) line_cursor#3 +Alias (byte*) char_cursor#14 = (byte*) char_cursor#44 (byte*) char_cursor#45 (byte*) char_cursor#15 +Alias (byte*) line_cursor#15 = (byte*) line_cursor#4 (byte*) line_cursor#16 (byte*) line_cursor#5 +Alias (word) slow_multiply::return#0 = (word) slow_multiply::m#2 (word) slow_multiply::return#3 (word) slow_multiply::return#1 +Alias (word) slow_multiply::m#0 = (word) slow_multiply::m#4 +Alias (byte) slow_multiply::b#2 = (byte) slow_multiply::b#3 +Alias (byte) slow_multiply::a#1 = (byte) slow_multiply::a#3 +Alias (word) slow_multiply::m#1 = (word~) slow_multiply::$2 +Alias (byte*) BGCOL#0 = (byte*) BGCOL#11 (byte*) BGCOL#10 (byte*) BGCOL#4 Alias (byte*) init_mul_tables::sqr1_hi#0 = (byte*~) init_mul_tables::$0 Alias (byte*) init_mul_tables::sqr1_lo#0 = (byte*~) init_mul_tables::$1 Alias (word) init_mul_tables::sqr#1 = (word~) init_mul_tables::$7 @@ -1445,45 +2261,107 @@ Alias (byte) init_mul_tables::x_255#0 = (byte~) init_mul_tables::$11 Alias (byte) init_mul_tables::x_255#1 = (byte/word~) init_mul_tables::$12 (byte) init_mul_tables::x_255#4 Alias (byte*) init_mul_tables::sqr2_lo#2 = (byte*) init_mul_tables::sqr2_lo#4 Alias (byte*) init_mul_tables::sqr2_hi#1 = (byte*) init_mul_tables::sqr2_hi#4 -Alias (byte*) mul_tables_compare::asm_sqr#2 = (byte*) mul_tables_compare::asm_sqr#3 (byte*) mul_tables_compare::asm_sqr#6 (byte*) mul_tables_compare::asm_sqr#5 (byte*) mul_tables_compare::asm_sqr#4 -Alias (byte*) mul_tables_compare::kc_sqr#2 = (byte*) mul_tables_compare::kc_sqr#3 (byte*) mul_tables_compare::kc_sqr#8 (byte*) mul_tables_compare::kc_sqr#7 (byte*) mul_tables_compare::kc_sqr#6 (byte*) mul_tables_compare::kc_sqr#5 (byte*) mul_tables_compare::kc_sqr#4 -Alias (byte*) char_cursor#41 = (byte*) char_cursor#42 (byte*) char_cursor#46 (byte*) char_cursor#47 -Alias (byte*) BGCOL#2 = (byte*) BGCOL#6 (byte*) BGCOL#4 -Alias (byte*) char_cursor#13 = (byte*) char_cursor#31 -Alias (word) print_word::w#0 = (word~) mul_tables_compare::$4 -Alias (byte*) char_cursor#14 = (byte*) char_cursor#32 -Alias (byte*) char_cursor#15 = (byte*) char_cursor#33 -Alias (word) print_word::w#1 = (word~) mul_tables_compare::$7 -Alias (byte*) char_cursor#16 = (byte*) char_cursor#34 -Alias (byte*) char_cursor#17 = (byte*) char_cursor#35 -Alias (byte*) char_cursor#18 = (byte*) char_cursor#36 +Alias (word) asm_multiply::return#0 = (word) asm_multiply::return#3 (word) asm_multiply::return#1 +Alias (byte*) mul_tables_compare::asm_sqr#2 = (byte*) mul_tables_compare::asm_sqr#3 (byte*) mul_tables_compare::asm_sqr#5 (byte*) mul_tables_compare::asm_sqr#4 +Alias (byte*) mul_tables_compare::kc_sqr#2 = (byte*) mul_tables_compare::kc_sqr#3 (byte*) mul_tables_compare::kc_sqr#7 (byte*) mul_tables_compare::kc_sqr#6 (byte*) mul_tables_compare::kc_sqr#5 (byte*) mul_tables_compare::kc_sqr#4 +Alias (byte*) BGCOL#2 = (byte*) BGCOL#8 (byte*) BGCOL#5 +Alias (byte*) char_cursor#66 = (byte*) char_cursor#74 (byte*) char_cursor#73 (byte*) char_cursor#67 +Alias (byte*) line_cursor#24 = (byte*) line_cursor#38 (byte*) line_cursor#43 (byte*) line_cursor#48 (byte*) line_cursor#44 (byte*) line_cursor#37 (byte*) line_cursor#30 (byte*) line_cursor#31 (byte*) line_cursor#25 +Alias (byte*) char_cursor#16 = (byte*) char_cursor#46 +Alias (word) print_word::w#0 = (word~) mul_tables_compare::$3 +Alias (byte*) char_cursor#17 = (byte*) char_cursor#47 +Alias (byte*) char_cursor#18 = (byte*) char_cursor#48 +Alias (word) print_word::w#1 = (word~) mul_tables_compare::$6 +Alias (byte*) char_cursor#19 = (byte*) char_cursor#49 +Alias (byte*) char_cursor#20 = (byte*) char_cursor#50 +Alias (byte*) line_cursor#17 = (byte*) line_cursor#6 +Alias (byte*) char_cursor#21 = (byte*) char_cursor#51 +Alias (byte*) line_cursor#18 = (byte*) line_cursor#7 +Alias (byte*) char_cursor#22 = (byte*) char_cursor#52 +Alias (word) slow_multiply::return#2 = (word) slow_multiply::return#4 +Alias (byte) mul_results_compare::a#2 = (byte) mul_results_compare::a#3 (byte) mul_results_compare::a#7 (byte) mul_results_compare::a#6 (byte) mul_results_compare::a#4 +Alias (byte) mul_results_compare::b#2 = (byte) mul_results_compare::b#3 (byte) mul_results_compare::b#5 (byte) mul_results_compare::b#4 +Alias (byte*) BGCOL#13 = (byte*) BGCOL#9 (byte*) BGCOL#6 (byte*) BGCOL#16 (byte*) BGCOL#3 (byte*) BGCOL#19 +Alias (byte*) char_cursor#68 = (byte*) char_cursor#81 (byte*) char_cursor#85 (byte*) char_cursor#75 (byte*) char_cursor#82 (byte*) char_cursor#76 (byte*) char_cursor#69 +Alias (byte*) line_cursor#26 = (byte*) line_cursor#51 (byte*) line_cursor#52 (byte*) line_cursor#49 (byte*) line_cursor#46 (byte*) line_cursor#50 (byte*) line_cursor#45 (byte*) line_cursor#39 (byte*) line_cursor#32 (byte*) line_cursor#40 (byte*) line_cursor#33 (byte*) line_cursor#27 +Alias (word) mul_results_compare::ms#0 = (word~) mul_results_compare::$0 (word) mul_results_compare::ms#1 (word) mul_results_compare::ms#3 (word) mul_results_compare::ms#2 +Alias (word) asm_multiply::return#2 = (word) asm_multiply::return#4 +Alias (word) mul_results_compare::ma#0 = (word~) mul_results_compare::$1 (word) mul_results_compare::ma#4 (word) mul_results_compare::ma#3 (word) mul_results_compare::ma#2 (word) mul_results_compare::ma#1 +Alias (byte*) char_cursor#23 = (byte*) char_cursor#53 +Alias (byte*) char_cursor#24 = (byte*) char_cursor#54 +Alias (byte*) char_cursor#25 = (byte*) char_cursor#55 +Alias (byte*) char_cursor#26 = (byte*) char_cursor#56 +Alias (byte*) char_cursor#27 = (byte*) char_cursor#57 +Alias (byte*) line_cursor#19 = (byte*) line_cursor#8 +Alias (byte*) char_cursor#28 = (byte*) char_cursor#58 +Alias (byte*) line_cursor#20 = (byte*) line_cursor#9 +Alias (byte*) char_cursor#29 = (byte*) char_cursor#59 +Alias (byte*) char_cursor#30 = (byte*) char_cursor#60 +Alias (byte*) line_cursor#10 = (byte*) line_cursor#21 Succesful SSA optimization Pass2AliasElimination -Not aliassing across scopes: print_str::str#5 print_str::str#1 -Not aliassing across scopes: char_cursor#44 char_cursor#41 -Not aliassing across scopes: print_word::w#2 print_word::w#0 -Not aliassing across scopes: char_cursor#38 char_cursor#13 -Not aliassing across scopes: char_cursor#21 char_cursor#25 -Not aliassing across scopes: char_cursor#22 char_cursor#25 +Not aliassing across scopes: print_str::str#9 print_str::str#5 +Not aliassing across scopes: char_cursor#71 char_cursor#24 +Not aliassing across scopes: line_cursor#22 line_cursor#26 +Not aliassing across scopes: char_cursor#62 char_cursor#28 +Not aliassing across scopes: print_word::w#4 print_word::w#2 +Not aliassing across scopes: char_cursor#63 char_cursor#23 +Not aliassing across scopes: char_cursor#35 char_cursor#10 +Not aliassing across scopes: char_cursor#36 char_cursor#10 Not aliassing across scopes: print_byte::b#2 print_byte::b#0 -Not aliassing across scopes: char_cursor#39 char_cursor#38 -Not aliassing across scopes: char_cursor#24 char_cursor#10 -Not aliassing across scopes: char_cursor#25 char_cursor#10 +Not aliassing across scopes: char_cursor#64 char_cursor#63 +Not aliassing across scopes: char_cursor#38 char_cursor#11 +Not aliassing across scopes: char_cursor#10 char_cursor#11 Not aliassing across scopes: print_char::ch#2 print_char::ch#0 -Not aliassing across scopes: char_cursor#27 char_cursor#39 -Not aliassing across scopes: char_cursor#40 char_cursor#0 -Not aliassing across scopes: BGCOL#3 BGCOL#0 -Not aliassing across scopes: char_cursor#11 char_cursor#17 +Not aliassing across scopes: char_cursor#41 char_cursor#64 +Not aliassing across scopes: BGCOL#1 BGCOL#0 +Not aliassing across scopes: char_cursor#65 char_cursor#0 +Not aliassing across scopes: line_cursor#23 char_cursor#0 +Not aliassing across scopes: char_cursor#13 char_cursor#20 +Not aliassing across scopes: line_cursor#14 line_cursor#17 +Not aliassing across scopes: char_cursor#14 char_cursor#27 +Not aliassing across scopes: line_cursor#15 line_cursor#19 +Not aliassing across scopes: 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: init_mul_tables::sqr2_hi#0 mul_sqr2_hi#0 Not aliassing across scopes: init_mul_tables::sqr2_lo#0 mul_sqr2_lo#0 -Not aliassing across scopes: BGCOL#1 BGCOL#3 -Not aliassing across scopes: char_cursor#51 char_cursor#40 +Not aliassing across scopes: asm_multiply::a#1 asm_multiply::a#0 +Not aliassing across scopes: asm_multiply::b#1 asm_multiply::b#0 +Not aliassing across scopes: BGCOL#7 BGCOL#1 +Not aliassing across scopes: char_cursor#80 char_cursor#65 +Not aliassing across scopes: line_cursor#47 line_cursor#23 Not aliassing across scopes: mul_tables_compare::asm_sqr#0 asm_mul_sqr1_lo#0 Not aliassing across scopes: mul_tables_compare::kc_sqr#0 mul_sqr1_lo#0 -Not aliassing across scopes: char_cursor#13 char_cursor#19 -Not aliassing across scopes: char_cursor#14 char_cursor#22 -Not aliassing across scopes: char_cursor#15 char_cursor#19 -Not aliassing across scopes: char_cursor#16 char_cursor#22 -Not aliassing across scopes: char_cursor#18 char_cursor#11 +Not aliassing across scopes: char_cursor#16 char_cursor#2 +Not aliassing across scopes: char_cursor#17 char_cursor#36 +Not aliassing across scopes: char_cursor#18 char_cursor#2 +Not aliassing across scopes: char_cursor#19 char_cursor#36 +Not aliassing across scopes: char_cursor#21 char_cursor#2 +Not aliassing across scopes: line_cursor#18 line_cursor#1 +Not aliassing across scopes: char_cursor#22 line_cursor#1 +Not aliassing across scopes: BGCOL#18 BGCOL#1 +Not aliassing across scopes: char_cursor#87 char_cursor#13 +Not aliassing across scopes: line_cursor#54 line_cursor#14 +Not aliassing across scopes: slow_multiply::a#0 mul_results_compare::a#2 +Not aliassing across scopes: slow_multiply::b#0 mul_results_compare::b#2 +Not aliassing across scopes: slow_multiply::return#2 slow_multiply::return#0 +Not aliassing across scopes: mul_results_compare::ms#0 slow_multiply::return#2 +Not aliassing across scopes: asm_multiply::a#0 mul_results_compare::a#2 +Not aliassing across scopes: asm_multiply::b#0 mul_results_compare::b#2 +Not aliassing across scopes: asm_multiply::return#2 asm_multiply::return#0 +Not aliassing across scopes: mul_results_compare::ma#0 asm_multiply::return#2 +Not aliassing across scopes: char_cursor#23 char_cursor#2 +Not aliassing across scopes: print_word::w#2 mul_results_compare::ms#0 +Not aliassing across scopes: char_cursor#24 char_cursor#36 +Not aliassing across scopes: char_cursor#25 char_cursor#2 +Not aliassing across scopes: print_word::w#3 mul_results_compare::ma#0 +Not aliassing across scopes: char_cursor#26 char_cursor#36 +Not aliassing across scopes: char_cursor#28 char_cursor#2 +Not aliassing across scopes: line_cursor#20 line_cursor#1 +Not aliassing across scopes: char_cursor#29 line_cursor#1 +Not aliassing across scopes: char_cursor#30 char_cursor#14 +Not aliassing across scopes: line_cursor#10 line_cursor#15 Alias (byte*) init_mul_tables::sqr1_lo#2 = (byte*) init_mul_tables::sqr1_lo#3 Alias (byte*) init_mul_tables::sqr1_hi#2 = (byte*) init_mul_tables::sqr1_hi#3 Alias (byte) init_mul_tables::c#1 = (byte) init_mul_tables::c#3 @@ -1491,68 +2369,153 @@ Alias (byte*) init_mul_tables::sqr2_lo#2 = (byte*) init_mul_tables::sqr2_lo#3 Alias (byte) init_mul_tables::x_255#1 = (byte) init_mul_tables::x_255#3 Alias (byte*) init_mul_tables::sqr2_hi#1 = (byte*) init_mul_tables::sqr2_hi#3 Succesful SSA optimization Pass2AliasElimination -Not aliassing across scopes: print_str::str#5 print_str::str#1 -Not aliassing across scopes: char_cursor#44 char_cursor#41 -Not aliassing across scopes: print_word::w#2 print_word::w#0 -Not aliassing across scopes: char_cursor#38 char_cursor#13 -Not aliassing across scopes: char_cursor#21 char_cursor#25 -Not aliassing across scopes: char_cursor#22 char_cursor#25 +Not aliassing across scopes: print_str::str#9 print_str::str#5 +Not aliassing across scopes: char_cursor#71 char_cursor#24 +Not aliassing across scopes: line_cursor#22 line_cursor#26 +Not aliassing across scopes: char_cursor#62 char_cursor#28 +Not aliassing across scopes: print_word::w#4 print_word::w#2 +Not aliassing across scopes: char_cursor#63 char_cursor#23 +Not aliassing across scopes: char_cursor#35 char_cursor#10 +Not aliassing across scopes: char_cursor#36 char_cursor#10 Not aliassing across scopes: print_byte::b#2 print_byte::b#0 -Not aliassing across scopes: char_cursor#39 char_cursor#38 -Not aliassing across scopes: char_cursor#24 char_cursor#10 -Not aliassing across scopes: char_cursor#25 char_cursor#10 +Not aliassing across scopes: char_cursor#64 char_cursor#63 +Not aliassing across scopes: char_cursor#38 char_cursor#11 +Not aliassing across scopes: char_cursor#10 char_cursor#11 Not aliassing across scopes: print_char::ch#2 print_char::ch#0 -Not aliassing across scopes: char_cursor#27 char_cursor#39 -Not aliassing across scopes: char_cursor#40 char_cursor#0 -Not aliassing across scopes: BGCOL#3 BGCOL#0 -Not aliassing across scopes: char_cursor#11 char_cursor#17 +Not aliassing across scopes: char_cursor#41 char_cursor#64 +Not aliassing across scopes: BGCOL#1 BGCOL#0 +Not aliassing across scopes: char_cursor#65 char_cursor#0 +Not aliassing across scopes: line_cursor#23 char_cursor#0 +Not aliassing across scopes: char_cursor#13 char_cursor#20 +Not aliassing across scopes: line_cursor#14 line_cursor#17 +Not aliassing across scopes: char_cursor#14 char_cursor#27 +Not aliassing across scopes: line_cursor#15 line_cursor#19 +Not aliassing across scopes: 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: init_mul_tables::sqr2_hi#0 mul_sqr2_hi#0 Not aliassing across scopes: init_mul_tables::sqr2_lo#0 mul_sqr2_lo#0 -Not aliassing across scopes: BGCOL#1 BGCOL#3 -Not aliassing across scopes: char_cursor#51 char_cursor#40 +Not aliassing across scopes: asm_multiply::a#1 asm_multiply::a#0 +Not aliassing across scopes: asm_multiply::b#1 asm_multiply::b#0 +Not aliassing across scopes: BGCOL#7 BGCOL#1 +Not aliassing across scopes: char_cursor#80 char_cursor#65 +Not aliassing across scopes: line_cursor#47 line_cursor#23 Not aliassing across scopes: mul_tables_compare::asm_sqr#0 asm_mul_sqr1_lo#0 Not aliassing across scopes: mul_tables_compare::kc_sqr#0 mul_sqr1_lo#0 -Not aliassing across scopes: char_cursor#13 char_cursor#19 -Not aliassing across scopes: char_cursor#14 char_cursor#22 -Not aliassing across scopes: char_cursor#15 char_cursor#19 -Not aliassing across scopes: char_cursor#16 char_cursor#22 -Not aliassing across scopes: char_cursor#18 char_cursor#11 +Not aliassing across scopes: char_cursor#16 char_cursor#2 +Not aliassing across scopes: char_cursor#17 char_cursor#36 +Not aliassing across scopes: char_cursor#18 char_cursor#2 +Not aliassing across scopes: char_cursor#19 char_cursor#36 +Not aliassing across scopes: char_cursor#21 char_cursor#2 +Not aliassing across scopes: line_cursor#18 line_cursor#1 +Not aliassing across scopes: char_cursor#22 line_cursor#1 +Not aliassing across scopes: BGCOL#18 BGCOL#1 +Not aliassing across scopes: char_cursor#87 char_cursor#13 +Not aliassing across scopes: line_cursor#54 line_cursor#14 +Not aliassing across scopes: slow_multiply::a#0 mul_results_compare::a#2 +Not aliassing across scopes: slow_multiply::b#0 mul_results_compare::b#2 +Not aliassing across scopes: slow_multiply::return#2 slow_multiply::return#0 +Not aliassing across scopes: mul_results_compare::ms#0 slow_multiply::return#2 +Not aliassing across scopes: asm_multiply::a#0 mul_results_compare::a#2 +Not aliassing across scopes: asm_multiply::b#0 mul_results_compare::b#2 +Not aliassing across scopes: asm_multiply::return#2 asm_multiply::return#0 +Not aliassing across scopes: mul_results_compare::ma#0 asm_multiply::return#2 +Not aliassing across scopes: char_cursor#23 char_cursor#2 +Not aliassing across scopes: print_word::w#2 mul_results_compare::ms#0 +Not aliassing across scopes: char_cursor#24 char_cursor#36 +Not aliassing across scopes: char_cursor#25 char_cursor#2 +Not aliassing across scopes: print_word::w#3 mul_results_compare::ma#0 +Not aliassing across scopes: char_cursor#26 char_cursor#36 +Not aliassing across scopes: char_cursor#28 char_cursor#2 +Not aliassing across scopes: line_cursor#20 line_cursor#1 +Not aliassing across scopes: char_cursor#29 line_cursor#1 +Not aliassing across scopes: char_cursor#30 char_cursor#14 +Not aliassing across scopes: line_cursor#10 line_cursor#15 +Self Phi Eliminated (byte*) char_cursor#33 +Self Phi Eliminated (byte) slow_multiply::b#1 +Self Phi Eliminated (byte) slow_multiply::a#2 Self Phi Eliminated (byte*) BGCOL#2 -Self Phi Eliminated (byte*) char_cursor#41 +Self Phi Eliminated (byte*) char_cursor#66 +Self Phi Eliminated (byte*) line_cursor#24 +Self Phi Eliminated (byte) mul_results_compare::a#2 +Self Phi Eliminated (byte*) BGCOL#13 +Self Phi Eliminated (byte*) char_cursor#68 +Self Phi Eliminated (byte*) line_cursor#26 Succesful SSA optimization Pass2SelfPhiElimination -Redundant Phi (byte*) char_cursor#21 (byte*) char_cursor#25 -Redundant Phi (byte*) char_cursor#22 (byte*) char_cursor#25 -Redundant Phi (byte*) char_cursor#24 (byte*) char_cursor#10 -Redundant Phi (byte*) char_cursor#25 (byte*) char_cursor#10 -Redundant Phi (byte*) char_cursor#40 (byte*) char_cursor#0 -Redundant Phi (byte*) BGCOL#3 (byte*) BGCOL#0 -Redundant Phi (byte*) char_cursor#11 (byte*) char_cursor#17 -Redundant Phi (byte*) BGCOL#1 (byte*) BGCOL#3 -Redundant Phi (byte*) char_cursor#51 (byte*) char_cursor#40 -Redundant Phi (byte*) BGCOL#2 (byte*) BGCOL#1 -Redundant Phi (byte*) char_cursor#41 (byte*) char_cursor#51 -Redundant Phi (byte*) char_cursor#13 (byte*) char_cursor#19 -Redundant Phi (byte*) char_cursor#14 (byte*) char_cursor#22 -Redundant Phi (byte*) char_cursor#15 (byte*) char_cursor#19 -Redundant Phi (byte*) char_cursor#16 (byte*) char_cursor#22 -Redundant Phi (byte*) char_cursor#18 (byte*) char_cursor#11 +Redundant Phi (byte*) char_cursor#33 (byte*) char_cursor#62 +Redundant Phi (byte*) char_cursor#35 (byte*) char_cursor#10 +Redundant Phi (byte*) char_cursor#36 (byte*) char_cursor#10 +Redundant Phi (byte*) char_cursor#38 (byte*) char_cursor#11 +Redundant Phi (byte*) char_cursor#10 (byte*) char_cursor#11 +Redundant Phi (byte*) BGCOL#1 (byte*) BGCOL#0 +Redundant Phi (byte*) char_cursor#65 (byte*) char_cursor#0 +Redundant Phi (byte*) line_cursor#23 (byte*) char_cursor#0 +Redundant Phi (byte*) char_cursor#13 (byte*) char_cursor#20 +Redundant Phi (byte*) line_cursor#14 (byte*) line_cursor#17 +Redundant Phi (byte*) char_cursor#14 (byte*) char_cursor#27 +Redundant Phi (byte*) line_cursor#15 (byte*) line_cursor#19 +Redundant Phi (byte) slow_multiply::a#1 (byte) slow_multiply::a#0 +Redundant Phi (byte) slow_multiply::b#2 (byte) slow_multiply::b#0 +Redundant Phi (byte) slow_multiply::b#1 (byte) slow_multiply::b#2 +Redundant Phi (byte) slow_multiply::a#2 (byte) slow_multiply::a#1 +Redundant Phi (byte) asm_multiply::a#1 (byte) asm_multiply::a#0 +Redundant Phi (byte) asm_multiply::b#1 (byte) asm_multiply::b#0 +Redundant Phi (byte*) BGCOL#7 (byte*) BGCOL#1 +Redundant Phi (byte*) char_cursor#80 (byte*) char_cursor#65 +Redundant Phi (byte*) line_cursor#47 (byte*) line_cursor#23 +Redundant Phi (byte*) BGCOL#2 (byte*) BGCOL#7 +Redundant Phi (byte*) char_cursor#66 (byte*) char_cursor#80 +Redundant Phi (byte*) line_cursor#24 (byte*) line_cursor#47 +Redundant Phi (byte*) char_cursor#16 (byte*) char_cursor#2 +Redundant Phi (byte*) char_cursor#17 (byte*) char_cursor#36 +Redundant Phi (byte*) char_cursor#18 (byte*) char_cursor#2 +Redundant Phi (byte*) char_cursor#19 (byte*) char_cursor#36 +Redundant Phi (byte*) char_cursor#21 (byte*) char_cursor#2 +Redundant Phi (byte*) line_cursor#18 (byte*) line_cursor#1 +Redundant Phi (byte*) char_cursor#22 (byte*) line_cursor#1 +Redundant Phi (byte*) BGCOL#18 (byte*) BGCOL#1 +Redundant Phi (byte*) char_cursor#87 (byte*) char_cursor#13 +Redundant Phi (byte*) line_cursor#54 (byte*) line_cursor#14 +Redundant Phi (byte) mul_results_compare::a#2 (byte) mul_results_compare::a#5 +Redundant Phi (byte*) BGCOL#13 (byte*) BGCOL#15 +Redundant Phi (byte*) char_cursor#68 (byte*) char_cursor#86 +Redundant Phi (byte*) line_cursor#26 (byte*) line_cursor#53 +Redundant Phi (byte*) char_cursor#23 (byte*) char_cursor#2 +Redundant Phi (byte*) char_cursor#24 (byte*) char_cursor#36 +Redundant Phi (byte*) char_cursor#25 (byte*) char_cursor#2 +Redundant Phi (byte*) char_cursor#26 (byte*) char_cursor#36 +Redundant Phi (byte*) char_cursor#28 (byte*) char_cursor#2 +Redundant Phi (byte*) line_cursor#20 (byte*) line_cursor#1 +Redundant Phi (byte*) char_cursor#29 (byte*) line_cursor#1 +Redundant Phi (byte*) char_cursor#30 (byte*) char_cursor#14 +Redundant Phi (byte*) line_cursor#10 (byte*) line_cursor#15 Succesful SSA optimization Pass2RedundantPhiElimination -Redundant Phi (byte*) char_cursor#38 (byte*) char_cursor#19 +Redundant Phi (byte*) char_cursor#62 (byte*) char_cursor#2 +Redundant Phi (byte*) char_cursor#63 (byte*) char_cursor#2 Succesful SSA optimization Pass2RedundantPhiElimination -Simple Condition (boolean~) print_str::$0 if(*((byte*) print_str::str#3)!=(byte) '@') goto print_str::@2 +Simple Condition (boolean~) print_str::$0 if(*((byte*) print_str::str#7)!=(byte) '@') goto print_str::@2 +Simple Condition (boolean~) print_ln::$1 if((byte*) line_cursor#1<(byte*) char_cursor#2) goto print_ln::@1 Simple Condition (boolean~) print_cls::$1 if((byte*) print_cls::sc#1!=(word/signed word~) print_cls::$0) goto print_cls::@1 +Simple Condition (boolean~) slow_multiply::$1 if((byte) slow_multiply::a#0<=(byte/signed byte/word/signed word) 0) goto slow_multiply::@1 +Simple Condition (boolean~) slow_multiply::$3 if((byte) slow_multiply::i#1!=(byte) slow_multiply::a#0) goto slow_multiply::@2 Simple Condition (boolean~) init_mul_tables::$4 if((byte~) init_mul_tables::$2!=(byte/signed byte/word/signed word) 0) goto init_mul_tables::@2 Simple Condition (boolean~) init_mul_tables::$9 if((byte*) init_mul_tables::sqr1_lo#1!=(byte*~) init_mul_tables::$8) goto init_mul_tables::@1 Simple Condition (boolean~) init_mul_tables::$14 if((byte) init_mul_tables::x_255#1!=(byte/signed byte/word/signed word) 0) goto init_mul_tables::@4 Simple Condition (boolean~) init_mul_tables::$16 if((byte*) init_mul_tables::sqr2_lo#1!=(byte*~) init_mul_tables::$15) goto init_mul_tables::@3 Simple Condition (boolean~) mul_tables_compare::$1 if(*((byte*) mul_tables_compare::kc_sqr#2)==*((byte*) mul_tables_compare::asm_sqr#2)) goto mul_tables_compare::@2 -Simple Condition (boolean~) mul_tables_compare::$11 if((byte*) mul_tables_compare::kc_sqr#1<(byte*~) mul_tables_compare::$10) goto mul_tables_compare::@1 +Simple Condition (boolean~) mul_tables_compare::$10 if((byte*) mul_tables_compare::kc_sqr#1<(byte*~) mul_tables_compare::$9) goto mul_tables_compare::@1 +Simple Condition (boolean~) mul_results_compare::$3 if((word) mul_results_compare::ms#0==(word) mul_results_compare::ma#0) goto mul_results_compare::@3 +Simple Condition (boolean~) mul_results_compare::$8 if((byte) mul_results_compare::b#1!=(byte/signed byte/word/signed word) 0) goto mul_results_compare::@2 +Simple Condition (boolean~) mul_results_compare::$9 if((byte) mul_results_compare::a#1!=(byte/signed byte/word/signed word) 0) goto mul_results_compare::@1 Succesful SSA optimization Pass2ConditionalJumpSimplification Constant (const byte*) char_cursor#0 = ((byte*))1024 Constant (const byte[]) print_byte::hextab#0 = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' } Constant (const byte*) print_cls::sc#0 = ((byte*))1024 Constant (const word/signed word) print_cls::$0 = 1024+1000 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 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) } @@ -1568,9 +2531,17 @@ 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_mul_tables_asm::mem#0 = ((byte*))255 -Constant (const word/signed word) mul_tables_compare::$9 = 512*4 +Constant (const byte*) asm_multiply::memA#0 = ((byte*))254 +Constant (const byte*) asm_multiply::memB#0 = ((byte*))255 +Constant (const word/signed word) mul_tables_compare::$8 = 512*4 Constant (const string) print_str::str#1 = mul_tables_compare::str Constant (const string) print_str::str#2 = mul_tables_compare::str1 +Constant (const string) print_str::str#3 = mul_tables_compare::str2 +Constant (const byte) mul_results_compare::a#0 = 0 +Constant (const byte) mul_results_compare::b#0 = 0 +Constant (const string) print_str::str#4 = mul_results_compare::str +Constant (const string) print_str::str#5 = mul_results_compare::str1 +Constant (const string) print_str::str#6 = mul_results_compare::str2 Succesful SSA optimization Pass2ConstantIdentification Constant (const byte*) init_mul_tables::sqr1_hi#0 = mul_sqr1_hi#0+1 Constant (const byte*) init_mul_tables::sqr1_lo#0 = mul_sqr1_lo#0+1 @@ -1585,33 +2556,103 @@ Constant (const byte*) init_mul_tables::$19 = mul_sqr2_hi#0+511 Constant (const byte*) init_mul_tables::$20 = mul_sqr1_hi#0+256 Constant (const byte[512]) mul_tables_compare::asm_sqr#0 = asm_mul_sqr1_lo#0 Constant (const byte[512]) mul_tables_compare::kc_sqr#0 = mul_sqr1_lo#0 -Constant (const byte*) mul_tables_compare::$10 = mul_sqr1_lo#0+mul_tables_compare::$9 +Constant (const byte*) mul_tables_compare::$9 = mul_sqr1_lo#0+mul_tables_compare::$8 Succesful SSA optimization Pass2ConstantIdentification +Fixing word constructor with asm_multiply::$0 ← *(asm_multiply::memB#0) w= *(asm_multiply::memA#0) +Succesful SSA optimization Pass2FixWordConstructors +Culled Empty Block (label) print_ln::@2 Culled Empty Block (label) print_word::@2 Culled Empty Block (label) print_byte::@2 Culled Empty Block (label) @6 -Culled Empty Block (label) main::@3 -Culled Empty Block (label) @7 +Culled Empty Block (label) main::@5 +Culled Empty Block (label) slow_multiply::@3 +Culled Empty Block (label) @8 Culled Empty Block (label) init_mul_tables::@6 Not culling empty block because it shares successor with its predecessor. (label) init_mul_tables::@7 -Culled Empty Block (label) @8 -Culled Empty Block (label) mul_tables_compare::@10 -Culled Empty Block (label) @11 +Culled Empty Block (label) @9 +Culled Empty Block (label) mul_tables_compare::@9 +Culled Empty Block (label) mul_tables_compare::@11 +Culled Empty Block (label) mul_results_compare::@13 +Culled Empty Block (label) mul_results_compare::@15 +Culled Empty Block (label) @14 Succesful SSA optimization Pass2CullEmptyBlocks Not culling empty block because it shares successor with its predecessor. (label) init_mul_tables::@7 -Not aliassing across scopes: print_word::w#2 print_word::w#0 +Not aliassing across scopes: char_cursor#71 char_cursor#11 +Not aliassing across scopes: line_cursor#22 line_cursor#53 +Not aliassing across scopes: print_word::w#4 print_word::w#2 Not aliassing across scopes: print_byte::b#2 print_byte::b#0 -Not aliassing across scopes: char_cursor#39 char_cursor#19 +Not aliassing across scopes: char_cursor#64 char_cursor#2 Not aliassing across scopes: print_char::ch#2 print_char::ch#0 -Not aliassing across scopes: char_cursor#27 char_cursor#39 -Not aliassing across scopes: char_cursor#17 char_cursor#10 +Not aliassing across scopes: char_cursor#41 char_cursor#64 +Not aliassing across scopes: char_cursor#20 line_cursor#1 +Not aliassing across scopes: line_cursor#17 line_cursor#1 +Not aliassing across scopes: char_cursor#86 char_cursor#20 +Not aliassing across scopes: line_cursor#53 line_cursor#17 +Not aliassing across scopes: slow_multiply::a#0 mul_results_compare::a#5 +Not aliassing across scopes: slow_multiply::b#0 mul_results_compare::b#2 +Not aliassing across scopes: slow_multiply::return#2 slow_multiply::return#0 +Not aliassing across scopes: mul_results_compare::ms#0 slow_multiply::return#2 +Not aliassing across scopes: asm_multiply::a#0 mul_results_compare::a#5 +Not aliassing across scopes: asm_multiply::b#0 mul_results_compare::b#2 +Not aliassing across scopes: asm_multiply::return#2 asm_multiply::return#0 +Not aliassing across scopes: mul_results_compare::ma#0 asm_multiply::return#2 +Not aliassing across scopes: print_word::w#2 mul_results_compare::ms#0 +Not aliassing across scopes: print_word::w#3 mul_results_compare::ma#0 +Not aliassing across scopes: char_cursor#27 char_cursor#11 +Alias (word) asm_multiply::return#0 = (word~) asm_multiply::$0 +Succesful SSA optimization Pass2AliasElimination +Not aliassing across scopes: char_cursor#71 char_cursor#11 +Not aliassing across scopes: line_cursor#22 line_cursor#53 +Not aliassing across scopes: print_word::w#4 print_word::w#2 +Not aliassing across scopes: print_byte::b#2 print_byte::b#0 +Not aliassing across scopes: char_cursor#64 char_cursor#2 +Not aliassing across scopes: print_char::ch#2 print_char::ch#0 +Not aliassing across scopes: char_cursor#41 char_cursor#64 +Not aliassing across scopes: char_cursor#20 line_cursor#1 +Not aliassing across scopes: line_cursor#17 line_cursor#1 +Not aliassing across scopes: char_cursor#86 char_cursor#20 +Not aliassing across scopes: line_cursor#53 line_cursor#17 +Not aliassing across scopes: slow_multiply::a#0 mul_results_compare::a#5 +Not aliassing across scopes: slow_multiply::b#0 mul_results_compare::b#2 +Not aliassing across scopes: slow_multiply::return#2 slow_multiply::return#0 +Not aliassing across scopes: mul_results_compare::ms#0 slow_multiply::return#2 +Not aliassing across scopes: asm_multiply::a#0 mul_results_compare::a#5 +Not aliassing across scopes: asm_multiply::b#0 mul_results_compare::b#2 +Not aliassing across scopes: asm_multiply::return#2 asm_multiply::return#0 +Not aliassing across scopes: mul_results_compare::ma#0 asm_multiply::return#2 +Not aliassing across scopes: print_word::w#2 mul_results_compare::ms#0 +Not aliassing across scopes: print_word::w#3 mul_results_compare::ma#0 +Not aliassing across scopes: char_cursor#27 char_cursor#11 +Self Phi Eliminated (byte*) BGCOL#15 +Self Phi Eliminated (byte*) char_cursor#86 +Self Phi Eliminated (byte*) line_cursor#53 +Succesful SSA optimization Pass2SelfPhiElimination +Redundant Phi (byte*) BGCOL#15 (const byte*) BGCOL#0 +Redundant Phi (byte*) char_cursor#86 (byte*) char_cursor#20 +Redundant Phi (byte*) line_cursor#53 (byte*) line_cursor#17 +Succesful SSA optimization Pass2RedundantPhiElimination Not culling empty block because it shares successor with its predecessor. (label) init_mul_tables::@7 -Not aliassing across scopes: print_word::w#2 print_word::w#0 +Not aliassing across scopes: char_cursor#71 char_cursor#11 +Not aliassing across scopes: line_cursor#22 line_cursor#17 +Not aliassing across scopes: print_word::w#4 print_word::w#2 Not aliassing across scopes: print_byte::b#2 print_byte::b#0 -Not aliassing across scopes: char_cursor#39 char_cursor#19 +Not aliassing across scopes: char_cursor#64 char_cursor#2 Not aliassing across scopes: print_char::ch#2 print_char::ch#0 -Not aliassing across scopes: char_cursor#27 char_cursor#39 -Not aliassing across scopes: char_cursor#17 char_cursor#10 +Not aliassing across scopes: char_cursor#41 char_cursor#64 +Not aliassing across scopes: char_cursor#20 line_cursor#1 +Not aliassing across scopes: line_cursor#17 line_cursor#1 +Not aliassing across scopes: slow_multiply::a#0 mul_results_compare::a#5 +Not aliassing across scopes: slow_multiply::b#0 mul_results_compare::b#2 +Not aliassing across scopes: slow_multiply::return#2 slow_multiply::return#0 +Not aliassing across scopes: mul_results_compare::ms#0 slow_multiply::return#2 +Not aliassing across scopes: asm_multiply::a#0 mul_results_compare::a#5 +Not aliassing across scopes: asm_multiply::b#0 mul_results_compare::b#2 +Not aliassing across scopes: asm_multiply::return#2 asm_multiply::return#0 +Not aliassing across scopes: mul_results_compare::ma#0 asm_multiply::return#2 +Not aliassing across scopes: print_word::w#2 mul_results_compare::ms#0 +Not aliassing across scopes: print_word::w#3 mul_results_compare::ma#0 +Not aliassing across scopes: char_cursor#27 char_cursor#11 +Not aliassing across scopes: line_cursor#19 line_cursor#17 OPTIMIZING CONTROL FLOW GRAPH Inlining constant with var siblings (const string) print_str::str#1 Inlining constant with var siblings (const string) print_str::str#1 @@ -1619,8 +2660,24 @@ Inlining constant with var siblings (const string) print_str::str#1 Inlining constant with var siblings (const string) print_str::str#2 Inlining constant with var siblings (const string) print_str::str#2 Inlining constant with var siblings (const string) print_str::str#2 +Inlining constant with var siblings (const string) print_str::str#3 +Inlining constant with var siblings (const string) print_str::str#3 +Inlining constant with var siblings (const string) print_str::str#3 +Inlining constant with var siblings (const string) print_str::str#4 +Inlining constant with var siblings (const string) print_str::str#4 +Inlining constant with var siblings (const string) print_str::str#4 +Inlining constant with var siblings (const string) print_str::str#5 +Inlining constant with var siblings (const string) print_str::str#5 +Inlining constant with var siblings (const string) print_str::str#5 +Inlining constant with var siblings (const string) print_str::str#6 +Inlining constant with var siblings (const string) print_str::str#6 +Inlining constant with var siblings (const string) print_str::str#6 Inlining constant with var siblings (const byte*) print_cls::sc#0 Inlining constant with var siblings (const byte*) print_cls::sc#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 word) init_mul_tables::sqr#0 Inlining constant with var siblings (const word) init_mul_tables::sqr#0 Inlining constant with var siblings (const word) init_mul_tables::sqr#0 @@ -1650,6 +2707,10 @@ Inlining constant with var siblings (const byte[512]) mul_tables_compare::asm_sq Inlining constant with var siblings (const byte[512]) mul_tables_compare::asm_sqr#0 Inlining constant with var siblings (const byte[512]) mul_tables_compare::kc_sqr#0 Inlining constant with var siblings (const byte[512]) mul_tables_compare::kc_sqr#0 +Inlining constant with var siblings (const byte) mul_results_compare::a#0 +Inlining constant with var siblings (const byte) mul_results_compare::a#0 +Inlining constant with var siblings (const byte) mul_results_compare::b#0 +Inlining constant with var siblings (const byte) mul_results_compare::b#0 Inlining constant with var siblings (const byte*) char_cursor#0 Inlining constant with var siblings (const byte*) char_cursor#0 Inlining constant with var siblings (const byte*) char_cursor#0 @@ -1657,8 +2718,11 @@ Inlining constant with var siblings (const byte*) char_cursor#0 Inlining constant with var siblings (const byte*) char_cursor#0 Inlining constant with var siblings (const byte*) char_cursor#0 Inlining constant with var siblings (const byte*) char_cursor#0 +Inlining constant with var siblings (const byte*) char_cursor#0 +Constant inlined slow_multiply::m#0 = (byte/signed byte/word/signed word) 0 Constant inlined print_cls::$0 = (word/signed word) 1024+(word/signed word) 1000 Constant inlined init_mul_tables::x_2#0 = (byte/signed byte/word/signed word) 0 +Constant inlined slow_multiply::i#0 = (byte/signed byte/word/signed word) 0 Constant inlined init_mul_tables::sqr1_hi#0 = (const byte[512]) mul_sqr1_hi#0+(byte/signed byte/word/signed word) 1 Constant inlined init_mul_tables::$15 = (const byte[512]) mul_sqr2_lo#0+(word/signed word) 511 Constant inlined init_mul_tables::dir#0 = (byte/word/signed word) 255 @@ -1669,45 +2733,61 @@ Constant inlined init_mul_tables::$19 = (const byte[512]) mul_sqr2_hi#0+(word/si Constant inlined init_mul_tables::x_255#0 = ((byte))-(byte/signed byte/word/signed word) 1 Constant inlined init_mul_tables::$8 = (const byte[512]) mul_sqr1_lo#0+(word/signed word) 512 Constant inlined init_mul_tables::dir#1 = (byte/signed byte/word/signed word) 1 -Constant inlined mul_tables_compare::$9 = (word/signed word) 512*(byte/signed byte/word/signed word) 4 +Constant inlined mul_tables_compare::$9 = (const byte[512]) mul_sqr1_lo#0+(word/signed word) 512*(byte/signed byte/word/signed word) 4 +Constant inlined mul_tables_compare::$8 = (word/signed word) 512*(byte/signed byte/word/signed word) 4 Constant inlined init_mul_tables::$10 = -(byte/signed byte/word/signed word) 1 -Constant inlined mul_tables_compare::$10 = (const byte[512]) mul_sqr1_lo#0+(word/signed word) 512*(byte/signed byte/word/signed word) 4 Constant inlined init_mul_tables::sqr#0 = (byte/signed byte/word/signed word) 0 Constant inlined init_mul_tables::sqr2_hi#0 = (const byte[512]) mul_sqr2_hi#0 Constant inlined init_mul_tables::sqr2_lo#0 = (const byte[512]) mul_sqr2_lo#0 Constant inlined init_mul_tables::c#0 = (byte/signed byte/word/signed word) 0 Constant inlined print_cls::sc#0 = ((byte*))(word/signed word) 1024 +Constant inlined mul_results_compare::b#0 = (byte/signed byte/word/signed word) 0 +Constant inlined mul_results_compare::a#0 = (byte/signed byte/word/signed word) 0 +Constant inlined print_str::str#4 = (const string) mul_results_compare::str +Constant inlined print_str::str#3 = (const string) mul_tables_compare::str2 Constant inlined mul_tables_compare::kc_sqr#0 = (const byte[512]) mul_sqr1_lo#0 Constant inlined print_str::str#2 = (const string) mul_tables_compare::str1 Constant inlined char_cursor#0 = ((byte*))(word/signed word) 1024 Constant inlined init_mul_tables::$20 = (const byte[512]) mul_sqr1_hi#0+(word/signed word) 256 Constant inlined print_str::str#1 = (const string) mul_tables_compare::str +Constant inlined print_str::str#6 = (const string) mul_results_compare::str2 +Constant inlined print_str::str#5 = (const string) mul_results_compare::str1 Constant inlined mul_tables_compare::asm_sqr#0 = (const byte[512]) asm_mul_sqr1_lo#0 Succesful SSA optimization Pass2ConstantInlining -Block Sequence Planned @begin @10 @end main main::@1 main::@2 main::@return mul_tables_compare mul_tables_compare::@1 mul_tables_compare::@3 mul_tables_compare::@6 mul_tables_compare::@7 mul_tables_compare::@8 mul_tables_compare::@9 mul_tables_compare::@return mul_tables_compare::@2 print_word print_word::@1 print_word::@return print_byte print_byte::@1 print_byte::@return print_char print_char::@return print_str print_str::@1 print_str::@return print_str::@2 print_cls print_cls::@1 print_cls::@return init_mul_tables_asm init_mul_tables_asm::@return init_mul_tables init_mul_tables::@1 init_mul_tables::@5 init_mul_tables::@2 init_mul_tables::@3 init_mul_tables::@7 init_mul_tables::@4 init_mul_tables::@8 init_mul_tables::@return -Added new block during phi lifting mul_tables_compare::@11(between mul_tables_compare::@2 and mul_tables_compare::@1) -Added new block during phi lifting print_cls::@3(between print_cls::@1 and print_cls::@1) +Block Sequence Planned @begin @13 @end main main::@1 main::@2 main::@3 main::@4 main::@return mul_results_compare mul_results_compare::@1 mul_results_compare::@2 mul_results_compare::@8 mul_results_compare::@9 mul_results_compare::@4 mul_results_compare::@10 mul_results_compare::@11 mul_results_compare::@12 mul_results_compare::@return mul_results_compare::@3 mul_results_compare::@6 mul_results_compare::@7 mul_results_compare::@14 print_ln print_ln::@1 print_ln::@return print_str print_str::@1 print_str::@return print_str::@2 print_word print_word::@1 print_word::@return print_byte print_byte::@1 print_byte::@return print_char print_char::@return asm_multiply asm_multiply::@return slow_multiply slow_multiply::@2 slow_multiply::@1 slow_multiply::@return mul_tables_compare mul_tables_compare::@1 mul_tables_compare::@3 mul_tables_compare::@6 mul_tables_compare::@7 mul_tables_compare::@8 mul_tables_compare::@return mul_tables_compare::@2 mul_tables_compare::@5 mul_tables_compare::@10 init_mul_tables_asm init_mul_tables_asm::@return init_mul_tables init_mul_tables::@1 init_mul_tables::@5 init_mul_tables::@2 init_mul_tables::@3 init_mul_tables::@7 init_mul_tables::@4 init_mul_tables::@8 init_mul_tables::@return print_cls print_cls::@1 print_cls::@return +Added new block during phi lifting mul_results_compare::@16(between mul_results_compare::@6 and mul_results_compare::@1) +Added new block during phi lifting mul_results_compare::@17(between mul_results_compare::@3 and mul_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 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 mul_tables_compare::@12(between mul_tables_compare::@2 and mul_tables_compare::@1) Added new block during phi lifting init_mul_tables::@9(between init_mul_tables::@2 and init_mul_tables::@1) Added new block during phi lifting init_mul_tables::@10(between init_mul_tables::@1 and init_mul_tables::@2) Added new block during phi lifting init_mul_tables::@11(between init_mul_tables::@4 and init_mul_tables::@3) Added new block during phi lifting init_mul_tables::@12(between init_mul_tables::@3 and init_mul_tables::@4) -Block Sequence Planned @begin @10 @end main main::@1 main::@2 main::@return mul_tables_compare mul_tables_compare::@1 mul_tables_compare::@3 mul_tables_compare::@6 mul_tables_compare::@7 mul_tables_compare::@8 mul_tables_compare::@9 mul_tables_compare::@return mul_tables_compare::@2 mul_tables_compare::@11 print_word print_word::@1 print_word::@return print_byte print_byte::@1 print_byte::@return print_char print_char::@return print_str print_str::@1 print_str::@return print_str::@2 print_cls print_cls::@1 print_cls::@return print_cls::@3 init_mul_tables_asm init_mul_tables_asm::@return init_mul_tables init_mul_tables::@1 init_mul_tables::@5 init_mul_tables::@2 init_mul_tables::@3 init_mul_tables::@7 init_mul_tables::@4 init_mul_tables::@8 init_mul_tables::@return init_mul_tables::@11 init_mul_tables::@12 init_mul_tables::@9 init_mul_tables::@10 +Added new block during phi lifting print_cls::@3(between print_cls::@1 and print_cls::@1) +Block Sequence Planned @begin @13 @end main main::@1 main::@2 main::@3 main::@4 main::@return mul_results_compare mul_results_compare::@1 mul_results_compare::@2 mul_results_compare::@8 mul_results_compare::@9 mul_results_compare::@4 mul_results_compare::@10 mul_results_compare::@11 mul_results_compare::@12 mul_results_compare::@return mul_results_compare::@3 mul_results_compare::@6 mul_results_compare::@7 mul_results_compare::@14 mul_results_compare::@16 mul_results_compare::@17 print_ln print_ln::@1 print_ln::@return print_ln::@3 print_str print_str::@1 print_str::@return print_str::@2 print_word print_word::@1 print_word::@return print_byte print_byte::@1 print_byte::@return print_char print_char::@return asm_multiply asm_multiply::@return slow_multiply slow_multiply::@2 slow_multiply::@7 slow_multiply::@1 slow_multiply::@return slow_multiply::@6 mul_tables_compare mul_tables_compare::@1 mul_tables_compare::@3 mul_tables_compare::@6 mul_tables_compare::@7 mul_tables_compare::@8 mul_tables_compare::@return mul_tables_compare::@2 mul_tables_compare::@5 mul_tables_compare::@10 mul_tables_compare::@12 init_mul_tables_asm init_mul_tables_asm::@return init_mul_tables init_mul_tables::@1 init_mul_tables::@5 init_mul_tables::@2 init_mul_tables::@3 init_mul_tables::@7 init_mul_tables::@4 init_mul_tables::@8 init_mul_tables::@return init_mul_tables::@11 init_mul_tables::@12 init_mul_tables::@9 init_mul_tables::@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 @10 +Adding NOP phi() at start of @13 Adding NOP phi() at start of @end -Adding NOP phi() at start of main Adding NOP phi() at start of main::@1 Adding NOP phi() at start of main::@2 -Adding NOP phi() at start of mul_tables_compare::@6 -Adding NOP phi() at start of print_cls +Adding NOP phi() at start of main::@3 +Adding NOP phi() at start of main::@4 +Adding NOP phi() at start of mul_results_compare +Adding NOP phi() at start of mul_tables_compare +Adding NOP phi() at start of mul_tables_compare::@5 +Adding NOP phi() at start of mul_tables_compare::@10 Adding NOP phi() at start of init_mul_tables Adding NOP phi() at start of init_mul_tables::@7 +Adding NOP phi() at start of print_cls CALL GRAPH Calls in [] to main:2 -Calls in [main] to init_mul_tables:5 init_mul_tables_asm:7 mul_tables_compare:9 -Calls in [mul_tables_compare] to print_cls:15 print_str:17 print_word:20 print_str:22 print_word:25 -Calls in [print_word] to print_byte:38 print_byte:42 -Calls in [print_byte] to print_char:49 print_char:54 +Calls in [main] to print_cls:5 init_mul_tables:7 init_mul_tables_asm:9 mul_tables_compare:11 mul_results_compare:13 +Calls in [mul_results_compare] to slow_multiply:20 asm_multiply:25 print_str:31 print_word:34 print_str:36 print_word:39 print_str:49 print_ln:51 +Calls in [print_word] to print_byte:78 print_byte:82 +Calls in [print_byte] to print_char:89 print_char:94 +Calls in [mul_tables_compare] to print_str:119 print_word:122 print_str:124 print_word:127 print_str:135 print_ln:137 Propagating live ranges... Propagating live ranges... @@ -1723,60 +2803,115 @@ Propagating live ranges... Propagating live ranges... Propagating live ranges... Propagating live ranges... -Created 25 initial phi equivalence classes -Coalesced [19] print_word::w#4 ← print_word::w#0 -Coalesced [21] char_cursor#58 ← char_cursor#10 -Coalesced [24] print_word::w#5 ← print_word::w#1 -Coalesced [26] char_cursor#53 ← char_cursor#10 -Coalesced [32] mul_tables_compare::kc_sqr#9 ← mul_tables_compare::kc_sqr#1 -Coalesced [33] mul_tables_compare::asm_sqr#7 ← mul_tables_compare::asm_sqr#1 -Coalesced [36] print_byte::b#4 ← print_byte::b#0 -Coalesced [37] char_cursor#54 ← char_cursor#19 -Coalesced [40] print_byte::b#5 ← print_byte::b#1 -Coalesced [41] char_cursor#55 ← char_cursor#10 -Coalesced [47] print_char::ch#3 ← print_char::ch#0 -Coalesced [48] char_cursor#56 ← char_cursor#39 -Coalesced [52] print_char::ch#4 ← print_char::ch#1 -Coalesced (already) [53] char_cursor#57 ← char_cursor#10 -Coalesced [61] print_str::str#6 ← print_str::str#5 -Coalesced (already) [62] char_cursor#59 ← char_cursor#44 -Coalesced [69] print_str::str#7 ← print_str::str#0 -Coalesced [70] char_cursor#60 ← char_cursor#1 -Coalesced [77] print_cls::sc#3 ← print_cls::sc#1 -Coalesced [91] init_mul_tables::sqr#8 ← init_mul_tables::sqr#2 -Coalesced [92] init_mul_tables::x_2#7 ← init_mul_tables::x_2#1 -Coalesced [115] init_mul_tables::x_255#5 ← init_mul_tables::x_255#1 -Coalesced [116] init_mul_tables::sqr2_lo#5 ← init_mul_tables::sqr2_lo#1 -Coalesced [117] init_mul_tables::sqr2_hi#5 ← init_mul_tables::sqr2_hi#1 -Coalesced [118] init_mul_tables::dir#4 ← init_mul_tables::dir#3 -Coalesced (already) [119] init_mul_tables::dir#5 ← init_mul_tables::dir#2 -Coalesced [120] init_mul_tables::c#5 ← init_mul_tables::c#1 -Coalesced [121] init_mul_tables::sqr#6 ← init_mul_tables::sqr#1 -Coalesced [122] init_mul_tables::sqr1_lo#5 ← init_mul_tables::sqr1_lo#1 -Coalesced [123] init_mul_tables::sqr1_hi#5 ← init_mul_tables::sqr1_hi#1 -Coalesced [124] init_mul_tables::x_2#5 ← init_mul_tables::x_2#2 -Coalesced [125] init_mul_tables::sqr#7 ← init_mul_tables::sqr#4 -Coalesced (already) [126] init_mul_tables::x_2#6 ← init_mul_tables::x_2#3 -Coalesced down to 17 phi equivalence classes -Culled Empty Block (label) mul_tables_compare::@11 -Culled Empty Block (label) print_cls::@3 +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Created 35 initial phi equivalence classes +Coalesced [30] char_cursor#91 ← char_cursor#20 +Coalesced [33] print_word::w#6 ← print_word::w#2 +Coalesced [35] char_cursor#90 ← char_cursor#11 +Coalesced [38] print_word::w#7 ← print_word::w#3 +Coalesced [40] char_cursor#88 ← char_cursor#11 +Coalesced [41] line_cursor#55 ← line_cursor#17 +Coalesced (already) [48] char_cursor#92 ← char_cursor#20 +Coalesced [50] line_cursor#57 ← line_cursor#17 +Not coalescing [52] char_cursor#89 ← line_cursor#1 +Coalesced [53] line_cursor#56 ← line_cursor#1 +Coalesced [54] mul_results_compare::a#8 ← mul_results_compare::a#1 +Coalesced [55] mul_results_compare::b#6 ← mul_results_compare::b#1 +Coalesced [57] line_cursor#58 ← line_cursor#22 +Coalesced (already) [62] line_cursor#59 ← line_cursor#1 +Coalesced [64] print_str::str#10 ← print_str::str#9 +Coalesced [65] char_cursor#94 ← char_cursor#71 +Coalesced [72] print_str::str#11 ← print_str::str#0 +Coalesced [73] char_cursor#95 ← char_cursor#1 +Coalesced [76] print_byte::b#4 ← print_byte::b#0 +Coalesced [77] char_cursor#96 ← char_cursor#2 +Coalesced [80] print_byte::b#5 ← print_byte::b#1 +Coalesced (already) [81] char_cursor#97 ← char_cursor#11 +Coalesced [87] print_char::ch#3 ← print_char::ch#0 +Coalesced [88] char_cursor#98 ← char_cursor#64 +Coalesced [92] print_char::ch#4 ← print_char::ch#1 +Coalesced (already) [93] char_cursor#99 ← char_cursor#11 +Coalesced [110] slow_multiply::return#5 ← slow_multiply::m#1 +Coalesced [113] slow_multiply::m#5 ← slow_multiply::m#1 +Coalesced [114] slow_multiply::i#3 ← slow_multiply::i#1 +Coalesced [121] print_word::w#8 ← print_word::w#0 +Coalesced (already) [123] char_cursor#93 ← char_cursor#11 +Coalesced [126] print_word::w#9 ← print_word::w#1 +Coalesced (already) [128] char_cursor#101 ← char_cursor#11 +Not coalescing [138] char_cursor#100 ← line_cursor#1 +Coalesced (already) [139] line_cursor#60 ← line_cursor#1 +Coalesced [140] mul_tables_compare::kc_sqr#8 ← mul_tables_compare::kc_sqr#1 +Coalesced [141] mul_tables_compare::asm_sqr#6 ← mul_tables_compare::asm_sqr#1 +Coalesced [155] init_mul_tables::sqr#8 ← init_mul_tables::sqr#2 +Coalesced [156] init_mul_tables::x_2#7 ← init_mul_tables::x_2#1 +Coalesced [179] init_mul_tables::x_255#5 ← init_mul_tables::x_255#1 +Coalesced [180] init_mul_tables::sqr2_lo#5 ← init_mul_tables::sqr2_lo#1 +Coalesced [181] init_mul_tables::sqr2_hi#5 ← init_mul_tables::sqr2_hi#1 +Coalesced [182] init_mul_tables::dir#4 ← init_mul_tables::dir#3 +Coalesced (already) [183] init_mul_tables::dir#5 ← init_mul_tables::dir#2 +Coalesced [184] init_mul_tables::c#5 ← init_mul_tables::c#1 +Coalesced [185] init_mul_tables::sqr#6 ← init_mul_tables::sqr#1 +Coalesced [186] init_mul_tables::sqr1_lo#5 ← init_mul_tables::sqr1_lo#1 +Coalesced [187] init_mul_tables::sqr1_hi#5 ← init_mul_tables::sqr1_hi#1 +Coalesced [188] init_mul_tables::x_2#5 ← init_mul_tables::x_2#2 +Coalesced [189] init_mul_tables::sqr#7 ← init_mul_tables::sqr#4 +Coalesced (already) [190] init_mul_tables::x_2#6 ← init_mul_tables::x_2#3 +Coalesced [197] print_cls::sc#3 ← print_cls::sc#1 +Coalesced down to 22 phi equivalence classes +Culled Empty Block (label) mul_results_compare::@16 +Culled Empty Block (label) mul_results_compare::@17 +Culled Empty Block (label) print_ln::@3 +Culled Empty Block (label) slow_multiply::@7 +Culled Empty Block (label) slow_multiply::@6 +Culled Empty Block (label) mul_tables_compare::@12 Culled Empty Block (label) init_mul_tables::@7 Culled Empty Block (label) init_mul_tables::@11 Not culling empty block because it shares successor with its predecessor. (label) init_mul_tables::@12 Culled Empty Block (label) init_mul_tables::@9 Culled Empty Block (label) init_mul_tables::@10 -Block Sequence Planned @begin @10 @end main main::@1 main::@2 main::@return mul_tables_compare mul_tables_compare::@1 mul_tables_compare::@3 mul_tables_compare::@6 mul_tables_compare::@7 mul_tables_compare::@8 mul_tables_compare::@9 mul_tables_compare::@return mul_tables_compare::@2 print_word print_word::@1 print_word::@return print_byte print_byte::@1 print_byte::@return print_char print_char::@return print_str print_str::@1 print_str::@return print_str::@2 print_cls print_cls::@1 print_cls::@return init_mul_tables_asm init_mul_tables_asm::@return init_mul_tables init_mul_tables::@1 init_mul_tables::@5 init_mul_tables::@2 init_mul_tables::@3 init_mul_tables::@4 init_mul_tables::@8 init_mul_tables::@return init_mul_tables::@12 +Culled Empty Block (label) print_cls::@3 +Block Sequence Planned @begin @13 @end main main::@1 main::@2 main::@3 main::@4 main::@return mul_results_compare mul_results_compare::@1 mul_results_compare::@2 mul_results_compare::@8 mul_results_compare::@9 mul_results_compare::@4 mul_results_compare::@10 mul_results_compare::@11 mul_results_compare::@12 mul_results_compare::@return mul_results_compare::@3 mul_results_compare::@6 mul_results_compare::@7 mul_results_compare::@14 print_ln print_ln::@1 print_ln::@return print_str print_str::@1 print_str::@return print_str::@2 print_word print_word::@1 print_word::@return print_byte print_byte::@1 print_byte::@return print_char print_char::@return asm_multiply asm_multiply::@return slow_multiply slow_multiply::@2 slow_multiply::@1 slow_multiply::@return mul_tables_compare mul_tables_compare::@1 mul_tables_compare::@3 mul_tables_compare::@6 mul_tables_compare::@7 mul_tables_compare::@8 mul_tables_compare::@return mul_tables_compare::@2 mul_tables_compare::@5 mul_tables_compare::@10 init_mul_tables_asm init_mul_tables_asm::@return init_mul_tables init_mul_tables::@1 init_mul_tables::@5 init_mul_tables::@2 init_mul_tables::@3 init_mul_tables::@4 init_mul_tables::@8 init_mul_tables::@return init_mul_tables::@12 print_cls print_cls::@1 print_cls::@return Adding NOP phi() at start of @begin -Adding NOP phi() at start of @10 +Adding NOP phi() at start of @13 Adding NOP phi() at start of @end -Adding NOP phi() at start of main Adding NOP phi() at start of main::@1 Adding NOP phi() at start of main::@2 -Adding NOP phi() at start of mul_tables_compare::@6 -Adding NOP phi() at start of mul_tables_compare::@8 -Adding NOP phi() at start of print_cls +Adding NOP phi() at start of main::@3 +Adding NOP phi() at start of main::@4 +Adding NOP phi() at start of mul_results_compare +Adding NOP phi() at start of mul_results_compare::@11 +Adding NOP phi() at start of mul_results_compare::@7 +Adding NOP phi() at start of mul_results_compare::@14 +Adding NOP phi() at start of mul_tables_compare +Adding NOP phi() at start of mul_tables_compare::@7 +Adding NOP phi() at start of mul_tables_compare::@5 +Adding NOP phi() at start of mul_tables_compare::@10 Adding NOP phi() at start of init_mul_tables Adding NOP phi() at start of init_mul_tables::@12 +Adding NOP phi() at start of print_cls +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... Propagating live ranges... Propagating live ranges... Propagating live ranges... @@ -1792,278 +2927,440 @@ Propagating live ranges... FINAL CONTROL FLOW GRAPH @begin: scope:[] from [0] phi() [ ] ( ) - to:@10 -@10: scope:[] from @begin + to:@13 +@13: scope:[] from @begin [1] phi() [ ] ( ) [2] call main param-assignment [ ] ( ) to:@end -@end: scope:[] from @10 +@end: scope:[] from @13 [3] phi() [ ] ( ) -main: scope:[main] from @10 - [4] phi() [ ] ( main:2 [ ] ) - [5] call init_mul_tables param-assignment [ ] ( main:2 [ ] ) +main: scope:[main] from @13 + [4] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 5 [ ] ( main:2 [ ] ) + [5] call print_cls param-assignment [ ] ( main:2 [ ] ) to:main::@1 main::@1: scope:[main] from main [6] phi() [ ] ( main:2 [ ] ) - [7] call init_mul_tables_asm param-assignment [ ] ( main:2 [ ] ) + [7] call init_mul_tables param-assignment [ ] ( main:2 [ ] ) to:main::@2 main::@2: scope:[main] from main::@1 [8] phi() [ ] ( main:2 [ ] ) - [9] call mul_tables_compare param-assignment [ ] ( main:2 [ ] ) + [9] call init_mul_tables_asm param-assignment [ ] ( main:2 [ ] ) + to:main::@3 +main::@3: scope:[main] from main::@2 + [10] phi() [ ] ( main:2 [ ] ) + [11] call mul_tables_compare param-assignment [ line_cursor#17 char_cursor#20 ] ( main:2 [ line_cursor#17 char_cursor#20 ] ) + to:main::@4 +main::@4: scope:[main] from main::@3 + [12] phi() [ line_cursor#17 char_cursor#20 ] ( main:2 [ line_cursor#17 char_cursor#20 ] ) + [13] call mul_results_compare param-assignment [ ] ( main:2 [ ] ) to:main::@return -main::@return: scope:[main] from main::@2 - [10] return [ ] ( main:2 [ ] ) +main::@return: scope:[main] from main::@4 + [14] return [ ] ( main:2 [ ] ) to:@return -mul_tables_compare: scope:[mul_tables_compare] from main::@2 - [11] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 5 [ ] ( main:2::mul_tables_compare:9 [ ] ) - to:mul_tables_compare::@1 -mul_tables_compare::@1: scope:[mul_tables_compare] from mul_tables_compare mul_tables_compare::@2 - [12] (byte*) mul_tables_compare::asm_sqr#2 ← phi( mul_tables_compare/(const byte[512]) asm_mul_sqr1_lo#0 mul_tables_compare::@2/(byte*) mul_tables_compare::asm_sqr#1 ) [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 ] ( main:2::mul_tables_compare:9 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 ] ) - [12] (byte*) mul_tables_compare::kc_sqr#2 ← phi( mul_tables_compare/(const byte[512]) mul_sqr1_lo#0 mul_tables_compare::@2/(byte*) mul_tables_compare::kc_sqr#1 ) [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 ] ( main:2::mul_tables_compare:9 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 ] ) - [13] if(*((byte*) mul_tables_compare::kc_sqr#2)==*((byte*) mul_tables_compare::asm_sqr#2)) goto mul_tables_compare::@2 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 ] ( main:2::mul_tables_compare:9 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 ] ) - to:mul_tables_compare::@3 -mul_tables_compare::@3: scope:[mul_tables_compare] from mul_tables_compare::@1 - [14] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 2 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 ] ( main:2::mul_tables_compare:9 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 ] ) - [15] call print_cls param-assignment [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 ] ( main:2::mul_tables_compare:9 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 ] ) - to:mul_tables_compare::@6 -mul_tables_compare::@6: scope:[mul_tables_compare] from mul_tables_compare::@3 - [16] phi() [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 ] ( main:2::mul_tables_compare:9 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 ] ) - [17] call print_str param-assignment [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 char_cursor#19 ] ( main:2::mul_tables_compare:9 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 char_cursor#19 ] ) - to:mul_tables_compare::@7 -mul_tables_compare::@7: scope:[mul_tables_compare] from mul_tables_compare::@6 - [18] (word) print_word::w#0 ← ((word)) (byte*) mul_tables_compare::asm_sqr#2 [ mul_tables_compare::kc_sqr#2 print_word::w#0 char_cursor#19 ] ( main:2::mul_tables_compare:9 [ mul_tables_compare::kc_sqr#2 print_word::w#0 char_cursor#19 ] ) - [19] call print_word param-assignment [ mul_tables_compare::kc_sqr#2 char_cursor#10 ] ( main:2::mul_tables_compare:9 [ mul_tables_compare::kc_sqr#2 char_cursor#10 ] ) - to:mul_tables_compare::@8 -mul_tables_compare::@8: scope:[mul_tables_compare] from mul_tables_compare::@7 - [20] phi() [ mul_tables_compare::kc_sqr#2 char_cursor#10 ] ( main:2::mul_tables_compare:9 [ mul_tables_compare::kc_sqr#2 char_cursor#10 ] ) - [21] call print_str param-assignment [ mul_tables_compare::kc_sqr#2 char_cursor#19 ] ( main:2::mul_tables_compare:9 [ mul_tables_compare::kc_sqr#2 char_cursor#19 ] ) - to:mul_tables_compare::@9 -mul_tables_compare::@9: scope:[mul_tables_compare] from mul_tables_compare::@8 - [22] (word) print_word::w#1 ← ((word)) (byte*) mul_tables_compare::kc_sqr#2 [ print_word::w#1 char_cursor#19 ] ( main:2::mul_tables_compare:9 [ print_word::w#1 char_cursor#19 ] ) - [23] call print_word param-assignment [ char_cursor#10 ] ( main:2::mul_tables_compare:9 [ char_cursor#10 ] ) - to:mul_tables_compare::@return -mul_tables_compare::@return: scope:[mul_tables_compare] from mul_tables_compare::@2 mul_tables_compare::@9 - [24] (byte*) char_cursor#17 ← phi( mul_tables_compare::@9/(byte*) char_cursor#10 mul_tables_compare::@2/((byte*))(word/signed word) 1024 ) [ ] ( main:2::mul_tables_compare:9 [ ] ) - [25] return [ ] ( main:2::mul_tables_compare:9 [ ] ) +mul_results_compare: scope:[mul_results_compare] from main::@4 + [15] phi() [ line_cursor#17 char_cursor#20 ] ( main:2::mul_results_compare:13 [ line_cursor#17 char_cursor#20 ] ) + to:mul_results_compare::@1 +mul_results_compare::@1: scope:[mul_results_compare] from mul_results_compare mul_results_compare::@6 + [16] (byte) mul_results_compare::a#5 ← phi( mul_results_compare/(byte/signed byte/word/signed word) 0 mul_results_compare::@6/(byte) mul_results_compare::a#1 ) [ mul_results_compare::a#5 line_cursor#17 char_cursor#20 ] ( main:2::mul_results_compare:13 [ mul_results_compare::a#5 line_cursor#17 char_cursor#20 ] ) + to:mul_results_compare::@2 +mul_results_compare::@2: scope:[mul_results_compare] from mul_results_compare::@1 mul_results_compare::@3 + [17] (byte) mul_results_compare::b#2 ← phi( mul_results_compare::@1/(byte/signed byte/word/signed word) 0 mul_results_compare::@3/(byte) mul_results_compare::b#1 ) [ mul_results_compare::a#5 mul_results_compare::b#2 line_cursor#17 char_cursor#20 ] ( main:2::mul_results_compare:13 [ mul_results_compare::a#5 mul_results_compare::b#2 line_cursor#17 char_cursor#20 ] ) + [18] (byte) slow_multiply::a#0 ← (byte) mul_results_compare::a#5 [ mul_results_compare::a#5 mul_results_compare::b#2 slow_multiply::a#0 line_cursor#17 char_cursor#20 ] ( main:2::mul_results_compare:13 [ mul_results_compare::a#5 mul_results_compare::b#2 slow_multiply::a#0 line_cursor#17 char_cursor#20 ] ) + [19] (byte) slow_multiply::b#0 ← (byte) mul_results_compare::b#2 [ mul_results_compare::a#5 mul_results_compare::b#2 slow_multiply::a#0 slow_multiply::b#0 line_cursor#17 char_cursor#20 ] ( main:2::mul_results_compare:13 [ mul_results_compare::a#5 mul_results_compare::b#2 slow_multiply::a#0 slow_multiply::b#0 line_cursor#17 char_cursor#20 ] ) + [20] call slow_multiply param-assignment [ mul_results_compare::a#5 mul_results_compare::b#2 slow_multiply::return#0 line_cursor#17 char_cursor#20 ] ( main:2::mul_results_compare:13 [ mul_results_compare::a#5 mul_results_compare::b#2 slow_multiply::return#0 line_cursor#17 char_cursor#20 ] ) + [21] (word) slow_multiply::return#2 ← (word) slow_multiply::return#0 [ mul_results_compare::a#5 mul_results_compare::b#2 slow_multiply::return#2 line_cursor#17 char_cursor#20 ] ( main:2::mul_results_compare:13 [ mul_results_compare::a#5 mul_results_compare::b#2 slow_multiply::return#2 line_cursor#17 char_cursor#20 ] ) + to:mul_results_compare::@8 +mul_results_compare::@8: scope:[mul_results_compare] from mul_results_compare::@2 + [22] (word) mul_results_compare::ms#0 ← (word) slow_multiply::return#2 [ mul_results_compare::a#5 mul_results_compare::b#2 mul_results_compare::ms#0 line_cursor#17 char_cursor#20 ] ( main:2::mul_results_compare:13 [ mul_results_compare::a#5 mul_results_compare::b#2 mul_results_compare::ms#0 line_cursor#17 char_cursor#20 ] ) + [23] (byte) asm_multiply::a#0 ← (byte) mul_results_compare::a#5 [ mul_results_compare::a#5 mul_results_compare::b#2 mul_results_compare::ms#0 asm_multiply::a#0 line_cursor#17 char_cursor#20 ] ( main:2::mul_results_compare:13 [ mul_results_compare::a#5 mul_results_compare::b#2 mul_results_compare::ms#0 asm_multiply::a#0 line_cursor#17 char_cursor#20 ] ) + [24] (byte) asm_multiply::b#0 ← (byte) mul_results_compare::b#2 [ mul_results_compare::a#5 mul_results_compare::b#2 mul_results_compare::ms#0 asm_multiply::a#0 asm_multiply::b#0 line_cursor#17 char_cursor#20 ] ( main:2::mul_results_compare:13 [ mul_results_compare::a#5 mul_results_compare::b#2 mul_results_compare::ms#0 asm_multiply::a#0 asm_multiply::b#0 line_cursor#17 char_cursor#20 ] ) + [25] call asm_multiply param-assignment [ mul_results_compare::a#5 mul_results_compare::b#2 mul_results_compare::ms#0 asm_multiply::return#0 line_cursor#17 char_cursor#20 ] ( main:2::mul_results_compare:13 [ mul_results_compare::a#5 mul_results_compare::b#2 mul_results_compare::ms#0 asm_multiply::return#0 line_cursor#17 char_cursor#20 ] ) + [26] (word) asm_multiply::return#2 ← (word) asm_multiply::return#0 [ mul_results_compare::a#5 mul_results_compare::b#2 mul_results_compare::ms#0 asm_multiply::return#2 line_cursor#17 char_cursor#20 ] ( main:2::mul_results_compare:13 [ mul_results_compare::a#5 mul_results_compare::b#2 mul_results_compare::ms#0 asm_multiply::return#2 line_cursor#17 char_cursor#20 ] ) + to:mul_results_compare::@9 +mul_results_compare::@9: scope:[mul_results_compare] from mul_results_compare::@8 + [27] (word) mul_results_compare::ma#0 ← (word) asm_multiply::return#2 [ mul_results_compare::a#5 mul_results_compare::b#2 mul_results_compare::ms#0 mul_results_compare::ma#0 line_cursor#17 char_cursor#20 ] ( main:2::mul_results_compare:13 [ mul_results_compare::a#5 mul_results_compare::b#2 mul_results_compare::ms#0 mul_results_compare::ma#0 line_cursor#17 char_cursor#20 ] ) + [28] if((word) mul_results_compare::ms#0==(word) mul_results_compare::ma#0) goto mul_results_compare::@3 [ mul_results_compare::a#5 mul_results_compare::b#2 mul_results_compare::ms#0 mul_results_compare::ma#0 line_cursor#17 char_cursor#20 ] ( main:2::mul_results_compare:13 [ mul_results_compare::a#5 mul_results_compare::b#2 mul_results_compare::ms#0 mul_results_compare::ma#0 line_cursor#17 char_cursor#20 ] ) + to:mul_results_compare::@4 +mul_results_compare::@4: scope:[mul_results_compare] from mul_results_compare::@9 + [29] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 2 [ mul_results_compare::ms#0 mul_results_compare::ma#0 line_cursor#17 char_cursor#20 ] ( main:2::mul_results_compare:13 [ mul_results_compare::ms#0 mul_results_compare::ma#0 line_cursor#17 char_cursor#20 ] ) + [30] call print_str param-assignment [ mul_results_compare::ms#0 mul_results_compare::ma#0 line_cursor#17 char_cursor#2 ] ( main:2::mul_results_compare:13 [ mul_results_compare::ms#0 mul_results_compare::ma#0 line_cursor#17 char_cursor#2 ] ) + to:mul_results_compare::@10 +mul_results_compare::@10: scope:[mul_results_compare] from mul_results_compare::@4 + [31] (word) print_word::w#2 ← (word) mul_results_compare::ms#0 [ mul_results_compare::ma#0 print_word::w#2 line_cursor#17 char_cursor#2 ] ( main:2::mul_results_compare:13 [ mul_results_compare::ma#0 print_word::w#2 line_cursor#17 char_cursor#2 ] ) + [32] call print_word param-assignment [ mul_results_compare::ma#0 char_cursor#11 line_cursor#17 ] ( main:2::mul_results_compare:13 [ mul_results_compare::ma#0 char_cursor#11 line_cursor#17 ] ) + to:mul_results_compare::@11 +mul_results_compare::@11: scope:[mul_results_compare] from mul_results_compare::@10 + [33] phi() [ mul_results_compare::ma#0 char_cursor#11 line_cursor#17 ] ( main:2::mul_results_compare:13 [ mul_results_compare::ma#0 char_cursor#11 line_cursor#17 ] ) + [34] call print_str param-assignment [ mul_results_compare::ma#0 line_cursor#17 char_cursor#2 ] ( main:2::mul_results_compare:13 [ mul_results_compare::ma#0 line_cursor#17 char_cursor#2 ] ) + to:mul_results_compare::@12 +mul_results_compare::@12: scope:[mul_results_compare] from mul_results_compare::@11 + [35] (word) print_word::w#3 ← (word) mul_results_compare::ma#0 [ print_word::w#3 line_cursor#17 char_cursor#2 ] ( main:2::mul_results_compare:13 [ print_word::w#3 line_cursor#17 char_cursor#2 ] ) + [36] call print_word param-assignment [ char_cursor#11 line_cursor#17 ] ( main:2::mul_results_compare:13 [ char_cursor#11 line_cursor#17 ] ) + to:mul_results_compare::@return +mul_results_compare::@return: scope:[mul_results_compare] from mul_results_compare::@12 mul_results_compare::@14 + [37] (byte*) line_cursor#19 ← phi( mul_results_compare::@12/(byte*) line_cursor#17 mul_results_compare::@14/(byte*) line_cursor#1 ) [ ] ( main:2::mul_results_compare:13 [ ] ) + [37] (byte*) char_cursor#27 ← phi( mul_results_compare::@12/(byte*) char_cursor#11 mul_results_compare::@14/(byte*~) char_cursor#89 ) [ ] ( main:2::mul_results_compare:13 [ ] ) + [38] return [ ] ( main:2::mul_results_compare:13 [ ] ) to:@return -mul_tables_compare::@2: scope:[mul_tables_compare] from mul_tables_compare::@1 - [26] (byte*) mul_tables_compare::asm_sqr#1 ← ++ (byte*) mul_tables_compare::asm_sqr#2 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#1 ] ( main:2::mul_tables_compare:9 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#1 ] ) - [27] (byte*) mul_tables_compare::kc_sqr#1 ← ++ (byte*) mul_tables_compare::kc_sqr#2 [ mul_tables_compare::kc_sqr#1 mul_tables_compare::asm_sqr#1 ] ( main:2::mul_tables_compare:9 [ mul_tables_compare::kc_sqr#1 mul_tables_compare::asm_sqr#1 ] ) - [28] if((byte*) mul_tables_compare::kc_sqr#1<(const byte[512]) mul_sqr1_lo#0+(word/signed word) 512*(byte/signed byte/word/signed word) 4) goto mul_tables_compare::@1 [ mul_tables_compare::kc_sqr#1 mul_tables_compare::asm_sqr#1 ] ( main:2::mul_tables_compare:9 [ mul_tables_compare::kc_sqr#1 mul_tables_compare::asm_sqr#1 ] ) - to:mul_tables_compare::@return -print_word: scope:[print_word] from mul_tables_compare::@7 mul_tables_compare::@9 - [29] (word) print_word::w#2 ← phi( mul_tables_compare::@7/(word) print_word::w#0 mul_tables_compare::@9/(word) print_word::w#1 ) [ print_word::w#2 char_cursor#19 ] ( main:2::mul_tables_compare:9::print_word:19 [ mul_tables_compare::kc_sqr#2 print_word::w#2 char_cursor#19 ] main:2::mul_tables_compare:9::print_word:23 [ print_word::w#2 char_cursor#19 ] ) - [30] (byte) print_byte::b#0 ← > (word) print_word::w#2 [ print_word::w#2 print_byte::b#0 char_cursor#19 ] ( main:2::mul_tables_compare:9::print_word:19 [ mul_tables_compare::kc_sqr#2 print_word::w#2 print_byte::b#0 char_cursor#19 ] main:2::mul_tables_compare:9::print_word:23 [ print_word::w#2 print_byte::b#0 char_cursor#19 ] ) - [31] call print_byte param-assignment [ char_cursor#10 print_word::w#2 ] ( main:2::mul_tables_compare:9::print_word:19 [ mul_tables_compare::kc_sqr#2 char_cursor#10 print_word::w#2 ] main:2::mul_tables_compare:9::print_word:23 [ char_cursor#10 print_word::w#2 ] ) - to:print_word::@1 -print_word::@1: scope:[print_word] from print_word - [32] (byte) print_byte::b#1 ← < (word) print_word::w#2 [ char_cursor#10 print_byte::b#1 ] ( main:2::mul_tables_compare:9::print_word:19 [ mul_tables_compare::kc_sqr#2 char_cursor#10 print_byte::b#1 ] main:2::mul_tables_compare:9::print_word:23 [ char_cursor#10 print_byte::b#1 ] ) - [33] call print_byte param-assignment [ char_cursor#10 ] ( main:2::mul_tables_compare:9::print_word:19 [ mul_tables_compare::kc_sqr#2 char_cursor#10 ] main:2::mul_tables_compare:9::print_word:23 [ char_cursor#10 ] ) - to:print_word::@return -print_word::@return: scope:[print_word] from print_word::@1 - [34] return [ char_cursor#10 ] ( main:2::mul_tables_compare:9::print_word:19 [ mul_tables_compare::kc_sqr#2 char_cursor#10 ] main:2::mul_tables_compare:9::print_word:23 [ char_cursor#10 ] ) +mul_results_compare::@3: scope:[mul_results_compare] from mul_results_compare::@9 + [39] (byte) mul_results_compare::b#1 ← ++ (byte) mul_results_compare::b#2 [ mul_results_compare::a#5 mul_results_compare::b#1 line_cursor#17 char_cursor#20 ] ( main:2::mul_results_compare:13 [ mul_results_compare::a#5 mul_results_compare::b#1 line_cursor#17 char_cursor#20 ] ) + [40] if((byte) mul_results_compare::b#1!=(byte/signed byte/word/signed word) 0) goto mul_results_compare::@2 [ mul_results_compare::a#5 mul_results_compare::b#1 line_cursor#17 char_cursor#20 ] ( main:2::mul_results_compare:13 [ mul_results_compare::a#5 mul_results_compare::b#1 line_cursor#17 char_cursor#20 ] ) + to:mul_results_compare::@6 +mul_results_compare::@6: scope:[mul_results_compare] from mul_results_compare::@3 + [41] (byte) mul_results_compare::a#1 ← ++ (byte) mul_results_compare::a#5 [ mul_results_compare::a#1 line_cursor#17 char_cursor#20 ] ( main:2::mul_results_compare:13 [ mul_results_compare::a#1 line_cursor#17 char_cursor#20 ] ) + [42] if((byte) mul_results_compare::a#1!=(byte/signed byte/word/signed word) 0) goto mul_results_compare::@1 [ mul_results_compare::a#1 line_cursor#17 char_cursor#20 ] ( main:2::mul_results_compare:13 [ mul_results_compare::a#1 line_cursor#17 char_cursor#20 ] ) + to:mul_results_compare::@7 +mul_results_compare::@7: scope:[mul_results_compare] from mul_results_compare::@6 + [43] phi() [ line_cursor#17 char_cursor#20 ] ( main:2::mul_results_compare:13 [ line_cursor#17 char_cursor#20 ] ) + [44] call print_str param-assignment [ line_cursor#17 char_cursor#2 ] ( main:2::mul_results_compare:13 [ line_cursor#17 char_cursor#2 ] ) + to:mul_results_compare::@14 +mul_results_compare::@14: scope:[mul_results_compare] from mul_results_compare::@7 + [45] phi() [ line_cursor#17 char_cursor#2 ] ( main:2::mul_results_compare:13 [ line_cursor#17 char_cursor#2 ] ) + [46] call print_ln param-assignment [ line_cursor#1 ] ( main:2::mul_results_compare:13 [ line_cursor#1 ] ) + [47] (byte*~) char_cursor#89 ← (byte*) line_cursor#1 [ char_cursor#89 line_cursor#1 ] ( main:2::mul_results_compare:13 [ char_cursor#89 line_cursor#1 ] ) + to:mul_results_compare::@return +print_ln: scope:[print_ln] from mul_results_compare::@14 mul_tables_compare::@10 + [48] (byte*) line_cursor#22 ← phi( mul_results_compare::@14/(byte*) line_cursor#17 mul_tables_compare::@10/((byte*))(word/signed word) 1024 ) [ line_cursor#22 char_cursor#2 ] ( main:2::mul_results_compare:13::print_ln:46 [ line_cursor#22 char_cursor#2 ] main:2::mul_tables_compare:11::print_ln:109 [ line_cursor#22 char_cursor#2 ] ) + to:print_ln::@1 +print_ln::@1: scope:[print_ln] from print_ln print_ln::@1 + [49] (byte*) line_cursor#11 ← phi( print_ln/(byte*) line_cursor#22 print_ln::@1/(byte*) line_cursor#1 ) [ line_cursor#11 char_cursor#2 ] ( main:2::mul_results_compare:13::print_ln:46 [ line_cursor#11 char_cursor#2 ] main:2::mul_tables_compare:11::print_ln:109 [ line_cursor#11 char_cursor#2 ] ) + [50] (byte*) line_cursor#1 ← (byte*) line_cursor#11 + (byte/signed byte/word/signed word) 40 [ line_cursor#1 char_cursor#2 ] ( main:2::mul_results_compare:13::print_ln:46 [ line_cursor#1 char_cursor#2 ] main:2::mul_tables_compare:11::print_ln:109 [ line_cursor#1 char_cursor#2 ] ) + [51] if((byte*) line_cursor#1<(byte*) char_cursor#2) goto print_ln::@1 [ line_cursor#1 char_cursor#2 ] ( main:2::mul_results_compare:13::print_ln:46 [ line_cursor#1 char_cursor#2 ] main:2::mul_tables_compare:11::print_ln:109 [ line_cursor#1 char_cursor#2 ] ) + to:print_ln::@return +print_ln::@return: scope:[print_ln] from print_ln::@1 + [52] return [ line_cursor#1 ] ( main:2::mul_results_compare:13::print_ln:46 [ line_cursor#1 ] main:2::mul_tables_compare:11::print_ln:109 [ line_cursor#1 ] ) to:@return -print_byte: scope:[print_byte] from print_word print_word::@1 - [35] (byte*) char_cursor#39 ← phi( print_word/(byte*) char_cursor#19 print_word::@1/(byte*) char_cursor#10 ) [ print_byte::b#2 char_cursor#39 ] ( main:2::mul_tables_compare:9::print_word:19::print_byte:31 [ mul_tables_compare::kc_sqr#2 print_word::w#2 print_byte::b#2 char_cursor#39 ] main:2::mul_tables_compare:9::print_word:23::print_byte:31 [ print_word::w#2 print_byte::b#2 char_cursor#39 ] main:2::mul_tables_compare:9::print_word:19::print_byte:33 [ mul_tables_compare::kc_sqr#2 print_byte::b#2 char_cursor#39 ] main:2::mul_tables_compare:9::print_word:23::print_byte:33 [ print_byte::b#2 char_cursor#39 ] ) - [35] (byte) print_byte::b#2 ← phi( print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 ) [ print_byte::b#2 char_cursor#39 ] ( main:2::mul_tables_compare:9::print_word:19::print_byte:31 [ mul_tables_compare::kc_sqr#2 print_word::w#2 print_byte::b#2 char_cursor#39 ] main:2::mul_tables_compare:9::print_word:23::print_byte:31 [ print_word::w#2 print_byte::b#2 char_cursor#39 ] main:2::mul_tables_compare:9::print_word:19::print_byte:33 [ mul_tables_compare::kc_sqr#2 print_byte::b#2 char_cursor#39 ] main:2::mul_tables_compare:9::print_word:23::print_byte:33 [ print_byte::b#2 char_cursor#39 ] ) - [36] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word) 4 [ print_byte::b#2 char_cursor#39 print_byte::$0 ] ( main:2::mul_tables_compare:9::print_word:19::print_byte:31 [ mul_tables_compare::kc_sqr#2 print_word::w#2 print_byte::b#2 char_cursor#39 print_byte::$0 ] main:2::mul_tables_compare:9::print_word:23::print_byte:31 [ print_word::w#2 print_byte::b#2 char_cursor#39 print_byte::$0 ] main:2::mul_tables_compare:9::print_word:19::print_byte:33 [ mul_tables_compare::kc_sqr#2 print_byte::b#2 char_cursor#39 print_byte::$0 ] main:2::mul_tables_compare:9::print_word:23::print_byte:33 [ print_byte::b#2 char_cursor#39 print_byte::$0 ] ) - [37] (byte) print_char::ch#0 ← *((const byte[]) print_byte::hextab#0 + (byte~) print_byte::$0) [ print_byte::b#2 char_cursor#39 print_char::ch#0 ] ( main:2::mul_tables_compare:9::print_word:19::print_byte:31 [ mul_tables_compare::kc_sqr#2 print_word::w#2 print_byte::b#2 char_cursor#39 print_char::ch#0 ] main:2::mul_tables_compare:9::print_word:23::print_byte:31 [ print_word::w#2 print_byte::b#2 char_cursor#39 print_char::ch#0 ] main:2::mul_tables_compare:9::print_word:19::print_byte:33 [ mul_tables_compare::kc_sqr#2 print_byte::b#2 char_cursor#39 print_char::ch#0 ] main:2::mul_tables_compare:9::print_word:23::print_byte:33 [ print_byte::b#2 char_cursor#39 print_char::ch#0 ] ) - [38] call print_char param-assignment [ char_cursor#10 print_byte::b#2 ] ( main:2::mul_tables_compare:9::print_word:19::print_byte:31 [ mul_tables_compare::kc_sqr#2 print_word::w#2 char_cursor#10 print_byte::b#2 ] main:2::mul_tables_compare:9::print_word:23::print_byte:31 [ print_word::w#2 char_cursor#10 print_byte::b#2 ] main:2::mul_tables_compare:9::print_word:19::print_byte:33 [ mul_tables_compare::kc_sqr#2 char_cursor#10 print_byte::b#2 ] main:2::mul_tables_compare:9::print_word:23::print_byte:33 [ char_cursor#10 print_byte::b#2 ] ) - to:print_byte::@1 -print_byte::@1: scope:[print_byte] from print_byte - [39] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word) 15 [ char_cursor#10 print_byte::$2 ] ( main:2::mul_tables_compare:9::print_word:19::print_byte:31 [ mul_tables_compare::kc_sqr#2 print_word::w#2 char_cursor#10 print_byte::$2 ] main:2::mul_tables_compare:9::print_word:23::print_byte:31 [ print_word::w#2 char_cursor#10 print_byte::$2 ] main:2::mul_tables_compare:9::print_word:19::print_byte:33 [ mul_tables_compare::kc_sqr#2 char_cursor#10 print_byte::$2 ] main:2::mul_tables_compare:9::print_word:23::print_byte:33 [ char_cursor#10 print_byte::$2 ] ) - [40] (byte) print_char::ch#1 ← *((const byte[]) print_byte::hextab#0 + (byte~) print_byte::$2) [ char_cursor#10 print_char::ch#1 ] ( main:2::mul_tables_compare:9::print_word:19::print_byte:31 [ mul_tables_compare::kc_sqr#2 print_word::w#2 char_cursor#10 print_char::ch#1 ] main:2::mul_tables_compare:9::print_word:23::print_byte:31 [ print_word::w#2 char_cursor#10 print_char::ch#1 ] main:2::mul_tables_compare:9::print_word:19::print_byte:33 [ mul_tables_compare::kc_sqr#2 char_cursor#10 print_char::ch#1 ] main:2::mul_tables_compare:9::print_word:23::print_byte:33 [ char_cursor#10 print_char::ch#1 ] ) - [41] call print_char param-assignment [ char_cursor#10 ] ( main:2::mul_tables_compare:9::print_word:19::print_byte:31 [ mul_tables_compare::kc_sqr#2 print_word::w#2 char_cursor#10 ] main:2::mul_tables_compare:9::print_word:23::print_byte:31 [ print_word::w#2 char_cursor#10 ] main:2::mul_tables_compare:9::print_word:19::print_byte:33 [ mul_tables_compare::kc_sqr#2 char_cursor#10 ] main:2::mul_tables_compare:9::print_word:23::print_byte:33 [ char_cursor#10 ] ) - to:print_byte::@return -print_byte::@return: scope:[print_byte] from print_byte::@1 - [42] return [ char_cursor#10 ] ( main:2::mul_tables_compare:9::print_word:19::print_byte:31 [ mul_tables_compare::kc_sqr#2 print_word::w#2 char_cursor#10 ] main:2::mul_tables_compare:9::print_word:23::print_byte:31 [ print_word::w#2 char_cursor#10 ] main:2::mul_tables_compare:9::print_word:19::print_byte:33 [ mul_tables_compare::kc_sqr#2 char_cursor#10 ] main:2::mul_tables_compare:9::print_word:23::print_byte:33 [ char_cursor#10 ] ) - to:@return -print_char: scope:[print_char] from print_byte print_byte::@1 - [43] (byte*) char_cursor#27 ← phi( print_byte/(byte*) char_cursor#39 print_byte::@1/(byte*) char_cursor#10 ) [ print_char::ch#2 char_cursor#27 ] ( main:2::mul_tables_compare:9::print_word:19::print_byte:31::print_char:38 [ mul_tables_compare::kc_sqr#2 print_word::w#2 print_byte::b#2 print_char::ch#2 char_cursor#27 ] main:2::mul_tables_compare:9::print_word:23::print_byte:31::print_char:38 [ print_word::w#2 print_byte::b#2 print_char::ch#2 char_cursor#27 ] main:2::mul_tables_compare:9::print_word:19::print_byte:33::print_char:38 [ mul_tables_compare::kc_sqr#2 print_byte::b#2 print_char::ch#2 char_cursor#27 ] main:2::mul_tables_compare:9::print_word:23::print_byte:33::print_char:38 [ print_byte::b#2 print_char::ch#2 char_cursor#27 ] main:2::mul_tables_compare:9::print_word:19::print_byte:31::print_char:41 [ mul_tables_compare::kc_sqr#2 print_word::w#2 print_char::ch#2 char_cursor#27 ] main:2::mul_tables_compare:9::print_word:23::print_byte:31::print_char:41 [ print_word::w#2 print_char::ch#2 char_cursor#27 ] main:2::mul_tables_compare:9::print_word:19::print_byte:33::print_char:41 [ mul_tables_compare::kc_sqr#2 print_char::ch#2 char_cursor#27 ] main:2::mul_tables_compare:9::print_word:23::print_byte:33::print_char:41 [ print_char::ch#2 char_cursor#27 ] ) - [43] (byte) print_char::ch#2 ← phi( print_byte/(byte) print_char::ch#0 print_byte::@1/(byte) print_char::ch#1 ) [ print_char::ch#2 char_cursor#27 ] ( main:2::mul_tables_compare:9::print_word:19::print_byte:31::print_char:38 [ mul_tables_compare::kc_sqr#2 print_word::w#2 print_byte::b#2 print_char::ch#2 char_cursor#27 ] main:2::mul_tables_compare:9::print_word:23::print_byte:31::print_char:38 [ print_word::w#2 print_byte::b#2 print_char::ch#2 char_cursor#27 ] main:2::mul_tables_compare:9::print_word:19::print_byte:33::print_char:38 [ mul_tables_compare::kc_sqr#2 print_byte::b#2 print_char::ch#2 char_cursor#27 ] main:2::mul_tables_compare:9::print_word:23::print_byte:33::print_char:38 [ print_byte::b#2 print_char::ch#2 char_cursor#27 ] main:2::mul_tables_compare:9::print_word:19::print_byte:31::print_char:41 [ mul_tables_compare::kc_sqr#2 print_word::w#2 print_char::ch#2 char_cursor#27 ] main:2::mul_tables_compare:9::print_word:23::print_byte:31::print_char:41 [ print_word::w#2 print_char::ch#2 char_cursor#27 ] main:2::mul_tables_compare:9::print_word:19::print_byte:33::print_char:41 [ mul_tables_compare::kc_sqr#2 print_char::ch#2 char_cursor#27 ] main:2::mul_tables_compare:9::print_word:23::print_byte:33::print_char:41 [ print_char::ch#2 char_cursor#27 ] ) - [44] *((byte*) char_cursor#27) ← (byte) print_char::ch#2 [ char_cursor#27 ] ( main:2::mul_tables_compare:9::print_word:19::print_byte:31::print_char:38 [ mul_tables_compare::kc_sqr#2 print_word::w#2 print_byte::b#2 char_cursor#27 ] main:2::mul_tables_compare:9::print_word:23::print_byte:31::print_char:38 [ print_word::w#2 print_byte::b#2 char_cursor#27 ] main:2::mul_tables_compare:9::print_word:19::print_byte:33::print_char:38 [ mul_tables_compare::kc_sqr#2 print_byte::b#2 char_cursor#27 ] main:2::mul_tables_compare:9::print_word:23::print_byte:33::print_char:38 [ print_byte::b#2 char_cursor#27 ] main:2::mul_tables_compare:9::print_word:19::print_byte:31::print_char:41 [ mul_tables_compare::kc_sqr#2 print_word::w#2 char_cursor#27 ] main:2::mul_tables_compare:9::print_word:23::print_byte:31::print_char:41 [ print_word::w#2 char_cursor#27 ] main:2::mul_tables_compare:9::print_word:19::print_byte:33::print_char:41 [ mul_tables_compare::kc_sqr#2 char_cursor#27 ] main:2::mul_tables_compare:9::print_word:23::print_byte:33::print_char:41 [ char_cursor#27 ] ) - [45] (byte*) char_cursor#10 ← ++ (byte*) char_cursor#27 [ char_cursor#10 ] ( main:2::mul_tables_compare:9::print_word:19::print_byte:31::print_char:38 [ mul_tables_compare::kc_sqr#2 print_word::w#2 print_byte::b#2 char_cursor#10 ] main:2::mul_tables_compare:9::print_word:23::print_byte:31::print_char:38 [ print_word::w#2 print_byte::b#2 char_cursor#10 ] main:2::mul_tables_compare:9::print_word:19::print_byte:33::print_char:38 [ mul_tables_compare::kc_sqr#2 print_byte::b#2 char_cursor#10 ] main:2::mul_tables_compare:9::print_word:23::print_byte:33::print_char:38 [ print_byte::b#2 char_cursor#10 ] main:2::mul_tables_compare:9::print_word:19::print_byte:31::print_char:41 [ mul_tables_compare::kc_sqr#2 print_word::w#2 char_cursor#10 ] main:2::mul_tables_compare:9::print_word:23::print_byte:31::print_char:41 [ print_word::w#2 char_cursor#10 ] main:2::mul_tables_compare:9::print_word:19::print_byte:33::print_char:41 [ mul_tables_compare::kc_sqr#2 char_cursor#10 ] main:2::mul_tables_compare:9::print_word:23::print_byte:33::print_char:41 [ char_cursor#10 ] ) - to:print_char::@return -print_char::@return: scope:[print_char] from print_char - [46] return [ char_cursor#10 ] ( main:2::mul_tables_compare:9::print_word:19::print_byte:31::print_char:38 [ mul_tables_compare::kc_sqr#2 print_word::w#2 print_byte::b#2 char_cursor#10 ] main:2::mul_tables_compare:9::print_word:23::print_byte:31::print_char:38 [ print_word::w#2 print_byte::b#2 char_cursor#10 ] main:2::mul_tables_compare:9::print_word:19::print_byte:33::print_char:38 [ mul_tables_compare::kc_sqr#2 print_byte::b#2 char_cursor#10 ] main:2::mul_tables_compare:9::print_word:23::print_byte:33::print_char:38 [ print_byte::b#2 char_cursor#10 ] main:2::mul_tables_compare:9::print_word:19::print_byte:31::print_char:41 [ mul_tables_compare::kc_sqr#2 print_word::w#2 char_cursor#10 ] main:2::mul_tables_compare:9::print_word:23::print_byte:31::print_char:41 [ print_word::w#2 char_cursor#10 ] main:2::mul_tables_compare:9::print_word:19::print_byte:33::print_char:41 [ mul_tables_compare::kc_sqr#2 char_cursor#10 ] main:2::mul_tables_compare:9::print_word:23::print_byte:33::print_char:41 [ char_cursor#10 ] ) - to:@return -print_str: scope:[print_str] from mul_tables_compare::@6 mul_tables_compare::@8 - [47] (byte*) char_cursor#44 ← phi( mul_tables_compare::@6/((byte*))(word/signed word) 1024 mul_tables_compare::@8/(byte*) char_cursor#10 ) [ print_str::str#5 char_cursor#44 ] ( main:2::mul_tables_compare:9::print_str:17 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 print_str::str#5 char_cursor#44 ] main:2::mul_tables_compare:9::print_str:21 [ mul_tables_compare::kc_sqr#2 print_str::str#5 char_cursor#44 ] ) - [47] (byte*) print_str::str#5 ← phi( mul_tables_compare::@6/(const string) mul_tables_compare::str mul_tables_compare::@8/(const string) mul_tables_compare::str1 ) [ print_str::str#5 char_cursor#44 ] ( main:2::mul_tables_compare:9::print_str:17 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 print_str::str#5 char_cursor#44 ] main:2::mul_tables_compare:9::print_str:21 [ mul_tables_compare::kc_sqr#2 print_str::str#5 char_cursor#44 ] ) +print_str: scope:[print_str] from mul_results_compare::@11 mul_results_compare::@4 mul_results_compare::@7 mul_tables_compare::@3 mul_tables_compare::@5 mul_tables_compare::@7 + [53] (byte*) char_cursor#71 ← phi( mul_results_compare::@11/(byte*) char_cursor#11 mul_results_compare::@4/(byte*) char_cursor#20 mul_results_compare::@7/(byte*) char_cursor#20 mul_tables_compare::@3/((byte*))(word/signed word) 1024 mul_tables_compare::@5/((byte*))(word/signed word) 1024 mul_tables_compare::@7/(byte*) char_cursor#11 ) [ print_str::str#9 char_cursor#71 ] ( main:2::mul_results_compare:13::print_str:30 [ mul_results_compare::ms#0 mul_results_compare::ma#0 line_cursor#17 print_str::str#9 char_cursor#71 ] main:2::mul_results_compare:13::print_str:34 [ mul_results_compare::ma#0 line_cursor#17 print_str::str#9 char_cursor#71 ] main:2::mul_results_compare:13::print_str:44 [ line_cursor#17 print_str::str#9 char_cursor#71 ] main:2::mul_tables_compare:11::print_str:94 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 print_str::str#9 char_cursor#71 ] main:2::mul_tables_compare:11::print_str:98 [ mul_tables_compare::kc_sqr#2 print_str::str#9 char_cursor#71 ] main:2::mul_tables_compare:11::print_str:107 [ print_str::str#9 char_cursor#71 ] ) + [53] (byte*) print_str::str#9 ← phi( mul_results_compare::@11/(const string) mul_results_compare::str1 mul_results_compare::@4/(const string) mul_results_compare::str mul_results_compare::@7/(const string) mul_results_compare::str2 mul_tables_compare::@3/(const string) mul_tables_compare::str mul_tables_compare::@5/(const string) mul_tables_compare::str2 mul_tables_compare::@7/(const string) mul_tables_compare::str1 ) [ print_str::str#9 char_cursor#71 ] ( main:2::mul_results_compare:13::print_str:30 [ mul_results_compare::ms#0 mul_results_compare::ma#0 line_cursor#17 print_str::str#9 char_cursor#71 ] main:2::mul_results_compare:13::print_str:34 [ mul_results_compare::ma#0 line_cursor#17 print_str::str#9 char_cursor#71 ] main:2::mul_results_compare:13::print_str:44 [ line_cursor#17 print_str::str#9 char_cursor#71 ] main:2::mul_tables_compare:11::print_str:94 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 print_str::str#9 char_cursor#71 ] main:2::mul_tables_compare:11::print_str:98 [ mul_tables_compare::kc_sqr#2 print_str::str#9 char_cursor#71 ] main:2::mul_tables_compare:11::print_str:107 [ print_str::str#9 char_cursor#71 ] ) to:print_str::@1 print_str::@1: scope:[print_str] from print_str print_str::@2 - [48] (byte*) char_cursor#19 ← phi( print_str/(byte*) char_cursor#44 print_str::@2/(byte*) char_cursor#1 ) [ char_cursor#19 print_str::str#3 ] ( main:2::mul_tables_compare:9::print_str:17 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 char_cursor#19 print_str::str#3 ] main:2::mul_tables_compare:9::print_str:21 [ mul_tables_compare::kc_sqr#2 char_cursor#19 print_str::str#3 ] ) - [48] (byte*) print_str::str#3 ← phi( print_str/(byte*) print_str::str#5 print_str::@2/(byte*) print_str::str#0 ) [ char_cursor#19 print_str::str#3 ] ( main:2::mul_tables_compare:9::print_str:17 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 char_cursor#19 print_str::str#3 ] main:2::mul_tables_compare:9::print_str:21 [ mul_tables_compare::kc_sqr#2 char_cursor#19 print_str::str#3 ] ) - [49] if(*((byte*) print_str::str#3)!=(byte) '@') goto print_str::@2 [ char_cursor#19 print_str::str#3 ] ( main:2::mul_tables_compare:9::print_str:17 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 char_cursor#19 print_str::str#3 ] main:2::mul_tables_compare:9::print_str:21 [ mul_tables_compare::kc_sqr#2 char_cursor#19 print_str::str#3 ] ) + [54] (byte*) char_cursor#2 ← phi( print_str/(byte*) char_cursor#71 print_str::@2/(byte*) char_cursor#1 ) [ char_cursor#2 print_str::str#7 ] ( main:2::mul_results_compare:13::print_str:30 [ mul_results_compare::ms#0 mul_results_compare::ma#0 line_cursor#17 char_cursor#2 print_str::str#7 ] main:2::mul_results_compare:13::print_str:34 [ mul_results_compare::ma#0 line_cursor#17 char_cursor#2 print_str::str#7 ] main:2::mul_results_compare:13::print_str:44 [ line_cursor#17 char_cursor#2 print_str::str#7 ] main:2::mul_tables_compare:11::print_str:94 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 char_cursor#2 print_str::str#7 ] main:2::mul_tables_compare:11::print_str:98 [ mul_tables_compare::kc_sqr#2 char_cursor#2 print_str::str#7 ] main:2::mul_tables_compare:11::print_str:107 [ char_cursor#2 print_str::str#7 ] ) + [54] (byte*) print_str::str#7 ← phi( print_str/(byte*) print_str::str#9 print_str::@2/(byte*) print_str::str#0 ) [ char_cursor#2 print_str::str#7 ] ( main:2::mul_results_compare:13::print_str:30 [ mul_results_compare::ms#0 mul_results_compare::ma#0 line_cursor#17 char_cursor#2 print_str::str#7 ] main:2::mul_results_compare:13::print_str:34 [ mul_results_compare::ma#0 line_cursor#17 char_cursor#2 print_str::str#7 ] main:2::mul_results_compare:13::print_str:44 [ line_cursor#17 char_cursor#2 print_str::str#7 ] main:2::mul_tables_compare:11::print_str:94 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 char_cursor#2 print_str::str#7 ] main:2::mul_tables_compare:11::print_str:98 [ mul_tables_compare::kc_sqr#2 char_cursor#2 print_str::str#7 ] main:2::mul_tables_compare:11::print_str:107 [ char_cursor#2 print_str::str#7 ] ) + [55] if(*((byte*) print_str::str#7)!=(byte) '@') goto print_str::@2 [ char_cursor#2 print_str::str#7 ] ( main:2::mul_results_compare:13::print_str:30 [ mul_results_compare::ms#0 mul_results_compare::ma#0 line_cursor#17 char_cursor#2 print_str::str#7 ] main:2::mul_results_compare:13::print_str:34 [ mul_results_compare::ma#0 line_cursor#17 char_cursor#2 print_str::str#7 ] main:2::mul_results_compare:13::print_str:44 [ line_cursor#17 char_cursor#2 print_str::str#7 ] main:2::mul_tables_compare:11::print_str:94 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 char_cursor#2 print_str::str#7 ] main:2::mul_tables_compare:11::print_str:98 [ mul_tables_compare::kc_sqr#2 char_cursor#2 print_str::str#7 ] main:2::mul_tables_compare:11::print_str:107 [ char_cursor#2 print_str::str#7 ] ) to:print_str::@return print_str::@return: scope:[print_str] from print_str::@1 - [50] return [ char_cursor#19 ] ( main:2::mul_tables_compare:9::print_str:17 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 char_cursor#19 ] main:2::mul_tables_compare:9::print_str:21 [ mul_tables_compare::kc_sqr#2 char_cursor#19 ] ) + [56] return [ char_cursor#2 ] ( main:2::mul_results_compare:13::print_str:30 [ mul_results_compare::ms#0 mul_results_compare::ma#0 line_cursor#17 char_cursor#2 ] main:2::mul_results_compare:13::print_str:34 [ mul_results_compare::ma#0 line_cursor#17 char_cursor#2 ] main:2::mul_results_compare:13::print_str:44 [ line_cursor#17 char_cursor#2 ] main:2::mul_tables_compare:11::print_str:94 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 char_cursor#2 ] main:2::mul_tables_compare:11::print_str:98 [ mul_tables_compare::kc_sqr#2 char_cursor#2 ] main:2::mul_tables_compare:11::print_str:107 [ char_cursor#2 ] ) to:@return print_str::@2: scope:[print_str] from print_str::@1 - [51] *((byte*) char_cursor#19) ← *((byte*) print_str::str#3) [ char_cursor#19 print_str::str#3 ] ( main:2::mul_tables_compare:9::print_str:17 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 char_cursor#19 print_str::str#3 ] main:2::mul_tables_compare:9::print_str:21 [ mul_tables_compare::kc_sqr#2 char_cursor#19 print_str::str#3 ] ) - [52] (byte*) char_cursor#1 ← ++ (byte*) char_cursor#19 [ print_str::str#3 char_cursor#1 ] ( main:2::mul_tables_compare:9::print_str:17 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 print_str::str#3 char_cursor#1 ] main:2::mul_tables_compare:9::print_str:21 [ mul_tables_compare::kc_sqr#2 print_str::str#3 char_cursor#1 ] ) - [53] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#3 [ print_str::str#0 char_cursor#1 ] ( main:2::mul_tables_compare:9::print_str:17 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 print_str::str#0 char_cursor#1 ] main:2::mul_tables_compare:9::print_str:21 [ mul_tables_compare::kc_sqr#2 print_str::str#0 char_cursor#1 ] ) + [57] *((byte*) char_cursor#2) ← *((byte*) print_str::str#7) [ char_cursor#2 print_str::str#7 ] ( main:2::mul_results_compare:13::print_str:30 [ mul_results_compare::ms#0 mul_results_compare::ma#0 line_cursor#17 char_cursor#2 print_str::str#7 ] main:2::mul_results_compare:13::print_str:34 [ mul_results_compare::ma#0 line_cursor#17 char_cursor#2 print_str::str#7 ] main:2::mul_results_compare:13::print_str:44 [ line_cursor#17 char_cursor#2 print_str::str#7 ] main:2::mul_tables_compare:11::print_str:94 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 char_cursor#2 print_str::str#7 ] main:2::mul_tables_compare:11::print_str:98 [ mul_tables_compare::kc_sqr#2 char_cursor#2 print_str::str#7 ] main:2::mul_tables_compare:11::print_str:107 [ char_cursor#2 print_str::str#7 ] ) + [58] (byte*) char_cursor#1 ← ++ (byte*) char_cursor#2 [ print_str::str#7 char_cursor#1 ] ( main:2::mul_results_compare:13::print_str:30 [ mul_results_compare::ms#0 mul_results_compare::ma#0 line_cursor#17 print_str::str#7 char_cursor#1 ] main:2::mul_results_compare:13::print_str:34 [ mul_results_compare::ma#0 line_cursor#17 print_str::str#7 char_cursor#1 ] main:2::mul_results_compare:13::print_str:44 [ line_cursor#17 print_str::str#7 char_cursor#1 ] main:2::mul_tables_compare:11::print_str:94 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 print_str::str#7 char_cursor#1 ] main:2::mul_tables_compare:11::print_str:98 [ mul_tables_compare::kc_sqr#2 print_str::str#7 char_cursor#1 ] main:2::mul_tables_compare:11::print_str:107 [ print_str::str#7 char_cursor#1 ] ) + [59] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#7 [ print_str::str#0 char_cursor#1 ] ( main:2::mul_results_compare:13::print_str:30 [ mul_results_compare::ms#0 mul_results_compare::ma#0 line_cursor#17 print_str::str#0 char_cursor#1 ] main:2::mul_results_compare:13::print_str:34 [ mul_results_compare::ma#0 line_cursor#17 print_str::str#0 char_cursor#1 ] main:2::mul_results_compare:13::print_str:44 [ line_cursor#17 print_str::str#0 char_cursor#1 ] main:2::mul_tables_compare:11::print_str:94 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 print_str::str#0 char_cursor#1 ] main:2::mul_tables_compare:11::print_str:98 [ mul_tables_compare::kc_sqr#2 print_str::str#0 char_cursor#1 ] main:2::mul_tables_compare:11::print_str:107 [ print_str::str#0 char_cursor#1 ] ) to:print_str::@1 -print_cls: scope:[print_cls] from mul_tables_compare::@3 - [54] phi() [ ] ( main:2::mul_tables_compare:9::print_cls:15 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 ] ) - to:print_cls::@1 -print_cls::@1: scope:[print_cls] from print_cls print_cls::@1 - [55] (byte*) print_cls::sc#2 ← phi( print_cls/((byte*))(word/signed word) 1024 print_cls::@1/(byte*) print_cls::sc#1 ) [ print_cls::sc#2 ] ( main:2::mul_tables_compare:9::print_cls:15 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 print_cls::sc#2 ] ) - [56] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::mul_tables_compare:9::print_cls:15 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 print_cls::sc#2 ] ) - [57] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 [ print_cls::sc#1 ] ( main:2::mul_tables_compare:9::print_cls:15 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 print_cls::sc#1 ] ) - [58] if((byte*) print_cls::sc#1!=(word/signed word) 1024+(word/signed word) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::mul_tables_compare:9::print_cls:15 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 print_cls::sc#1 ] ) - to:print_cls::@return -print_cls::@return: scope:[print_cls] from print_cls::@1 - [59] return [ ] ( main:2::mul_tables_compare:9::print_cls:15 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 ] ) +print_word: scope:[print_word] from mul_results_compare::@10 mul_results_compare::@12 mul_tables_compare::@6 mul_tables_compare::@8 + [60] (word) print_word::w#4 ← phi( mul_results_compare::@10/(word) print_word::w#2 mul_results_compare::@12/(word) print_word::w#3 mul_tables_compare::@6/(word) print_word::w#0 mul_tables_compare::@8/(word) print_word::w#1 ) [ char_cursor#2 print_word::w#4 ] ( main:2::mul_results_compare:13::print_word:32 [ mul_results_compare::ma#0 line_cursor#17 char_cursor#2 print_word::w#4 ] main:2::mul_results_compare:13::print_word:36 [ line_cursor#17 char_cursor#2 print_word::w#4 ] main:2::mul_tables_compare:11::print_word:96 [ mul_tables_compare::kc_sqr#2 char_cursor#2 print_word::w#4 ] main:2::mul_tables_compare:11::print_word:100 [ char_cursor#2 print_word::w#4 ] ) + [61] (byte) print_byte::b#0 ← > (word) print_word::w#4 [ char_cursor#2 print_word::w#4 print_byte::b#0 ] ( main:2::mul_results_compare:13::print_word:32 [ mul_results_compare::ma#0 line_cursor#17 char_cursor#2 print_word::w#4 print_byte::b#0 ] main:2::mul_results_compare:13::print_word:36 [ line_cursor#17 char_cursor#2 print_word::w#4 print_byte::b#0 ] main:2::mul_tables_compare:11::print_word:96 [ mul_tables_compare::kc_sqr#2 char_cursor#2 print_word::w#4 print_byte::b#0 ] main:2::mul_tables_compare:11::print_word:100 [ char_cursor#2 print_word::w#4 print_byte::b#0 ] ) + [62] call print_byte param-assignment [ char_cursor#11 print_word::w#4 ] ( main:2::mul_results_compare:13::print_word:32 [ mul_results_compare::ma#0 line_cursor#17 char_cursor#11 print_word::w#4 ] main:2::mul_results_compare:13::print_word:36 [ line_cursor#17 char_cursor#11 print_word::w#4 ] main:2::mul_tables_compare:11::print_word:96 [ mul_tables_compare::kc_sqr#2 char_cursor#11 print_word::w#4 ] main:2::mul_tables_compare:11::print_word:100 [ char_cursor#11 print_word::w#4 ] ) + to:print_word::@1 +print_word::@1: scope:[print_word] from print_word + [63] (byte) print_byte::b#1 ← < (word) print_word::w#4 [ char_cursor#11 print_byte::b#1 ] ( main:2::mul_results_compare:13::print_word:32 [ mul_results_compare::ma#0 line_cursor#17 char_cursor#11 print_byte::b#1 ] main:2::mul_results_compare:13::print_word:36 [ line_cursor#17 char_cursor#11 print_byte::b#1 ] main:2::mul_tables_compare:11::print_word:96 [ mul_tables_compare::kc_sqr#2 char_cursor#11 print_byte::b#1 ] main:2::mul_tables_compare:11::print_word:100 [ char_cursor#11 print_byte::b#1 ] ) + [64] call print_byte param-assignment [ char_cursor#11 ] ( main:2::mul_results_compare:13::print_word:32 [ mul_results_compare::ma#0 line_cursor#17 char_cursor#11 ] main:2::mul_results_compare:13::print_word:36 [ line_cursor#17 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:96 [ mul_tables_compare::kc_sqr#2 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:100 [ char_cursor#11 ] ) + to:print_word::@return +print_word::@return: scope:[print_word] from print_word::@1 + [65] return [ char_cursor#11 ] ( main:2::mul_results_compare:13::print_word:32 [ mul_results_compare::ma#0 line_cursor#17 char_cursor#11 ] main:2::mul_results_compare:13::print_word:36 [ line_cursor#17 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:96 [ mul_tables_compare::kc_sqr#2 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:100 [ char_cursor#11 ] ) to:@return -init_mul_tables_asm: scope:[init_mul_tables_asm] from main::@1 +print_byte: scope:[print_byte] from print_word print_word::@1 + [66] (byte*) char_cursor#64 ← phi( print_word/(byte*) char_cursor#2 print_word::@1/(byte*) char_cursor#11 ) [ print_byte::b#2 char_cursor#64 ] ( main:2::mul_results_compare:13::print_word:32::print_byte:62 [ mul_results_compare::ma#0 line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#64 ] main:2::mul_results_compare:13::print_word:36::print_byte:62 [ line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#64 ] main:2::mul_tables_compare:11::print_word:96::print_byte:62 [ mul_tables_compare::kc_sqr#2 print_word::w#4 print_byte::b#2 char_cursor#64 ] main:2::mul_tables_compare:11::print_word:100::print_byte:62 [ print_word::w#4 print_byte::b#2 char_cursor#64 ] main:2::mul_results_compare:13::print_word:32::print_byte:64 [ mul_results_compare::ma#0 line_cursor#17 print_byte::b#2 char_cursor#64 ] main:2::mul_results_compare:13::print_word:36::print_byte:64 [ line_cursor#17 print_byte::b#2 char_cursor#64 ] main:2::mul_tables_compare:11::print_word:96::print_byte:64 [ mul_tables_compare::kc_sqr#2 print_byte::b#2 char_cursor#64 ] main:2::mul_tables_compare:11::print_word:100::print_byte:64 [ print_byte::b#2 char_cursor#64 ] ) + [66] (byte) print_byte::b#2 ← phi( print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 ) [ print_byte::b#2 char_cursor#64 ] ( main:2::mul_results_compare:13::print_word:32::print_byte:62 [ mul_results_compare::ma#0 line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#64 ] main:2::mul_results_compare:13::print_word:36::print_byte:62 [ line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#64 ] main:2::mul_tables_compare:11::print_word:96::print_byte:62 [ mul_tables_compare::kc_sqr#2 print_word::w#4 print_byte::b#2 char_cursor#64 ] main:2::mul_tables_compare:11::print_word:100::print_byte:62 [ print_word::w#4 print_byte::b#2 char_cursor#64 ] main:2::mul_results_compare:13::print_word:32::print_byte:64 [ mul_results_compare::ma#0 line_cursor#17 print_byte::b#2 char_cursor#64 ] main:2::mul_results_compare:13::print_word:36::print_byte:64 [ line_cursor#17 print_byte::b#2 char_cursor#64 ] main:2::mul_tables_compare:11::print_word:96::print_byte:64 [ mul_tables_compare::kc_sqr#2 print_byte::b#2 char_cursor#64 ] main:2::mul_tables_compare:11::print_word:100::print_byte:64 [ print_byte::b#2 char_cursor#64 ] ) + [67] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word) 4 [ print_byte::b#2 char_cursor#64 print_byte::$0 ] ( main:2::mul_results_compare:13::print_word:32::print_byte:62 [ mul_results_compare::ma#0 line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#64 print_byte::$0 ] main:2::mul_results_compare:13::print_word:36::print_byte:62 [ line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#64 print_byte::$0 ] main:2::mul_tables_compare:11::print_word:96::print_byte:62 [ mul_tables_compare::kc_sqr#2 print_word::w#4 print_byte::b#2 char_cursor#64 print_byte::$0 ] main:2::mul_tables_compare:11::print_word:100::print_byte:62 [ print_word::w#4 print_byte::b#2 char_cursor#64 print_byte::$0 ] main:2::mul_results_compare:13::print_word:32::print_byte:64 [ mul_results_compare::ma#0 line_cursor#17 print_byte::b#2 char_cursor#64 print_byte::$0 ] main:2::mul_results_compare:13::print_word:36::print_byte:64 [ line_cursor#17 print_byte::b#2 char_cursor#64 print_byte::$0 ] main:2::mul_tables_compare:11::print_word:96::print_byte:64 [ mul_tables_compare::kc_sqr#2 print_byte::b#2 char_cursor#64 print_byte::$0 ] main:2::mul_tables_compare:11::print_word:100::print_byte:64 [ print_byte::b#2 char_cursor#64 print_byte::$0 ] ) + [68] (byte) print_char::ch#0 ← *((const byte[]) print_byte::hextab#0 + (byte~) print_byte::$0) [ print_byte::b#2 char_cursor#64 print_char::ch#0 ] ( main:2::mul_results_compare:13::print_word:32::print_byte:62 [ mul_results_compare::ma#0 line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#64 print_char::ch#0 ] main:2::mul_results_compare:13::print_word:36::print_byte:62 [ line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#64 print_char::ch#0 ] main:2::mul_tables_compare:11::print_word:96::print_byte:62 [ mul_tables_compare::kc_sqr#2 print_word::w#4 print_byte::b#2 char_cursor#64 print_char::ch#0 ] main:2::mul_tables_compare:11::print_word:100::print_byte:62 [ print_word::w#4 print_byte::b#2 char_cursor#64 print_char::ch#0 ] main:2::mul_results_compare:13::print_word:32::print_byte:64 [ mul_results_compare::ma#0 line_cursor#17 print_byte::b#2 char_cursor#64 print_char::ch#0 ] main:2::mul_results_compare:13::print_word:36::print_byte:64 [ line_cursor#17 print_byte::b#2 char_cursor#64 print_char::ch#0 ] main:2::mul_tables_compare:11::print_word:96::print_byte:64 [ mul_tables_compare::kc_sqr#2 print_byte::b#2 char_cursor#64 print_char::ch#0 ] main:2::mul_tables_compare:11::print_word:100::print_byte:64 [ print_byte::b#2 char_cursor#64 print_char::ch#0 ] ) + [69] call print_char param-assignment [ char_cursor#11 print_byte::b#2 ] ( main:2::mul_results_compare:13::print_word:32::print_byte:62 [ mul_results_compare::ma#0 line_cursor#17 print_word::w#4 char_cursor#11 print_byte::b#2 ] main:2::mul_results_compare:13::print_word:36::print_byte:62 [ line_cursor#17 print_word::w#4 char_cursor#11 print_byte::b#2 ] main:2::mul_tables_compare:11::print_word:96::print_byte:62 [ mul_tables_compare::kc_sqr#2 print_word::w#4 char_cursor#11 print_byte::b#2 ] main:2::mul_tables_compare:11::print_word:100::print_byte:62 [ print_word::w#4 char_cursor#11 print_byte::b#2 ] main:2::mul_results_compare:13::print_word:32::print_byte:64 [ mul_results_compare::ma#0 line_cursor#17 char_cursor#11 print_byte::b#2 ] main:2::mul_results_compare:13::print_word:36::print_byte:64 [ line_cursor#17 char_cursor#11 print_byte::b#2 ] main:2::mul_tables_compare:11::print_word:96::print_byte:64 [ mul_tables_compare::kc_sqr#2 char_cursor#11 print_byte::b#2 ] main:2::mul_tables_compare:11::print_word:100::print_byte:64 [ char_cursor#11 print_byte::b#2 ] ) + to:print_byte::@1 +print_byte::@1: scope:[print_byte] from print_byte + [70] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word) 15 [ char_cursor#11 print_byte::$2 ] ( main:2::mul_results_compare:13::print_word:32::print_byte:62 [ mul_results_compare::ma#0 line_cursor#17 print_word::w#4 char_cursor#11 print_byte::$2 ] main:2::mul_results_compare:13::print_word:36::print_byte:62 [ line_cursor#17 print_word::w#4 char_cursor#11 print_byte::$2 ] main:2::mul_tables_compare:11::print_word:96::print_byte:62 [ mul_tables_compare::kc_sqr#2 print_word::w#4 char_cursor#11 print_byte::$2 ] main:2::mul_tables_compare:11::print_word:100::print_byte:62 [ print_word::w#4 char_cursor#11 print_byte::$2 ] main:2::mul_results_compare:13::print_word:32::print_byte:64 [ mul_results_compare::ma#0 line_cursor#17 char_cursor#11 print_byte::$2 ] main:2::mul_results_compare:13::print_word:36::print_byte:64 [ line_cursor#17 char_cursor#11 print_byte::$2 ] main:2::mul_tables_compare:11::print_word:96::print_byte:64 [ mul_tables_compare::kc_sqr#2 char_cursor#11 print_byte::$2 ] main:2::mul_tables_compare:11::print_word:100::print_byte:64 [ char_cursor#11 print_byte::$2 ] ) + [71] (byte) print_char::ch#1 ← *((const byte[]) print_byte::hextab#0 + (byte~) print_byte::$2) [ char_cursor#11 print_char::ch#1 ] ( main:2::mul_results_compare:13::print_word:32::print_byte:62 [ mul_results_compare::ma#0 line_cursor#17 print_word::w#4 char_cursor#11 print_char::ch#1 ] main:2::mul_results_compare:13::print_word:36::print_byte:62 [ line_cursor#17 print_word::w#4 char_cursor#11 print_char::ch#1 ] main:2::mul_tables_compare:11::print_word:96::print_byte:62 [ mul_tables_compare::kc_sqr#2 print_word::w#4 char_cursor#11 print_char::ch#1 ] main:2::mul_tables_compare:11::print_word:100::print_byte:62 [ print_word::w#4 char_cursor#11 print_char::ch#1 ] main:2::mul_results_compare:13::print_word:32::print_byte:64 [ mul_results_compare::ma#0 line_cursor#17 char_cursor#11 print_char::ch#1 ] main:2::mul_results_compare:13::print_word:36::print_byte:64 [ line_cursor#17 char_cursor#11 print_char::ch#1 ] main:2::mul_tables_compare:11::print_word:96::print_byte:64 [ mul_tables_compare::kc_sqr#2 char_cursor#11 print_char::ch#1 ] main:2::mul_tables_compare:11::print_word:100::print_byte:64 [ char_cursor#11 print_char::ch#1 ] ) + [72] call print_char param-assignment [ char_cursor#11 ] ( main:2::mul_results_compare:13::print_word:32::print_byte:62 [ mul_results_compare::ma#0 line_cursor#17 print_word::w#4 char_cursor#11 ] main:2::mul_results_compare:13::print_word:36::print_byte:62 [ line_cursor#17 print_word::w#4 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:96::print_byte:62 [ mul_tables_compare::kc_sqr#2 print_word::w#4 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:100::print_byte:62 [ print_word::w#4 char_cursor#11 ] main:2::mul_results_compare:13::print_word:32::print_byte:64 [ mul_results_compare::ma#0 line_cursor#17 char_cursor#11 ] main:2::mul_results_compare:13::print_word:36::print_byte:64 [ line_cursor#17 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:96::print_byte:64 [ mul_tables_compare::kc_sqr#2 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:100::print_byte:64 [ char_cursor#11 ] ) + to:print_byte::@return +print_byte::@return: scope:[print_byte] from print_byte::@1 + [73] return [ char_cursor#11 ] ( main:2::mul_results_compare:13::print_word:32::print_byte:62 [ mul_results_compare::ma#0 line_cursor#17 print_word::w#4 char_cursor#11 ] main:2::mul_results_compare:13::print_word:36::print_byte:62 [ line_cursor#17 print_word::w#4 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:96::print_byte:62 [ mul_tables_compare::kc_sqr#2 print_word::w#4 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:100::print_byte:62 [ print_word::w#4 char_cursor#11 ] main:2::mul_results_compare:13::print_word:32::print_byte:64 [ mul_results_compare::ma#0 line_cursor#17 char_cursor#11 ] main:2::mul_results_compare:13::print_word:36::print_byte:64 [ line_cursor#17 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:96::print_byte:64 [ mul_tables_compare::kc_sqr#2 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:100::print_byte:64 [ char_cursor#11 ] ) + to:@return +print_char: scope:[print_char] from print_byte print_byte::@1 + [74] (byte*) char_cursor#41 ← phi( print_byte/(byte*) char_cursor#64 print_byte::@1/(byte*) char_cursor#11 ) [ print_char::ch#2 char_cursor#41 ] ( main:2::mul_results_compare:13::print_word:32::print_byte:62::print_char:69 [ mul_results_compare::ma#0 line_cursor#17 print_word::w#4 print_byte::b#2 print_char::ch#2 char_cursor#41 ] main:2::mul_results_compare:13::print_word:36::print_byte:62::print_char:69 [ line_cursor#17 print_word::w#4 print_byte::b#2 print_char::ch#2 char_cursor#41 ] main:2::mul_tables_compare:11::print_word:96::print_byte:62::print_char:69 [ mul_tables_compare::kc_sqr#2 print_word::w#4 print_byte::b#2 print_char::ch#2 char_cursor#41 ] main:2::mul_tables_compare:11::print_word:100::print_byte:62::print_char:69 [ print_word::w#4 print_byte::b#2 print_char::ch#2 char_cursor#41 ] main:2::mul_results_compare:13::print_word:32::print_byte:64::print_char:69 [ mul_results_compare::ma#0 line_cursor#17 print_byte::b#2 print_char::ch#2 char_cursor#41 ] main:2::mul_results_compare:13::print_word:36::print_byte:64::print_char:69 [ line_cursor#17 print_byte::b#2 print_char::ch#2 char_cursor#41 ] main:2::mul_tables_compare:11::print_word:96::print_byte:64::print_char:69 [ mul_tables_compare::kc_sqr#2 print_byte::b#2 print_char::ch#2 char_cursor#41 ] main:2::mul_tables_compare:11::print_word:100::print_byte:64::print_char:69 [ print_byte::b#2 print_char::ch#2 char_cursor#41 ] main:2::mul_results_compare:13::print_word:32::print_byte:62::print_char:72 [ mul_results_compare::ma#0 line_cursor#17 print_word::w#4 print_char::ch#2 char_cursor#41 ] main:2::mul_results_compare:13::print_word:36::print_byte:62::print_char:72 [ line_cursor#17 print_word::w#4 print_char::ch#2 char_cursor#41 ] main:2::mul_tables_compare:11::print_word:96::print_byte:62::print_char:72 [ mul_tables_compare::kc_sqr#2 print_word::w#4 print_char::ch#2 char_cursor#41 ] main:2::mul_tables_compare:11::print_word:100::print_byte:62::print_char:72 [ print_word::w#4 print_char::ch#2 char_cursor#41 ] main:2::mul_results_compare:13::print_word:32::print_byte:64::print_char:72 [ mul_results_compare::ma#0 line_cursor#17 print_char::ch#2 char_cursor#41 ] main:2::mul_results_compare:13::print_word:36::print_byte:64::print_char:72 [ line_cursor#17 print_char::ch#2 char_cursor#41 ] main:2::mul_tables_compare:11::print_word:96::print_byte:64::print_char:72 [ mul_tables_compare::kc_sqr#2 print_char::ch#2 char_cursor#41 ] main:2::mul_tables_compare:11::print_word:100::print_byte:64::print_char:72 [ print_char::ch#2 char_cursor#41 ] ) + [74] (byte) print_char::ch#2 ← phi( print_byte/(byte) print_char::ch#0 print_byte::@1/(byte) print_char::ch#1 ) [ print_char::ch#2 char_cursor#41 ] ( main:2::mul_results_compare:13::print_word:32::print_byte:62::print_char:69 [ mul_results_compare::ma#0 line_cursor#17 print_word::w#4 print_byte::b#2 print_char::ch#2 char_cursor#41 ] main:2::mul_results_compare:13::print_word:36::print_byte:62::print_char:69 [ line_cursor#17 print_word::w#4 print_byte::b#2 print_char::ch#2 char_cursor#41 ] main:2::mul_tables_compare:11::print_word:96::print_byte:62::print_char:69 [ mul_tables_compare::kc_sqr#2 print_word::w#4 print_byte::b#2 print_char::ch#2 char_cursor#41 ] main:2::mul_tables_compare:11::print_word:100::print_byte:62::print_char:69 [ print_word::w#4 print_byte::b#2 print_char::ch#2 char_cursor#41 ] main:2::mul_results_compare:13::print_word:32::print_byte:64::print_char:69 [ mul_results_compare::ma#0 line_cursor#17 print_byte::b#2 print_char::ch#2 char_cursor#41 ] main:2::mul_results_compare:13::print_word:36::print_byte:64::print_char:69 [ line_cursor#17 print_byte::b#2 print_char::ch#2 char_cursor#41 ] main:2::mul_tables_compare:11::print_word:96::print_byte:64::print_char:69 [ mul_tables_compare::kc_sqr#2 print_byte::b#2 print_char::ch#2 char_cursor#41 ] main:2::mul_tables_compare:11::print_word:100::print_byte:64::print_char:69 [ print_byte::b#2 print_char::ch#2 char_cursor#41 ] main:2::mul_results_compare:13::print_word:32::print_byte:62::print_char:72 [ mul_results_compare::ma#0 line_cursor#17 print_word::w#4 print_char::ch#2 char_cursor#41 ] main:2::mul_results_compare:13::print_word:36::print_byte:62::print_char:72 [ line_cursor#17 print_word::w#4 print_char::ch#2 char_cursor#41 ] main:2::mul_tables_compare:11::print_word:96::print_byte:62::print_char:72 [ mul_tables_compare::kc_sqr#2 print_word::w#4 print_char::ch#2 char_cursor#41 ] main:2::mul_tables_compare:11::print_word:100::print_byte:62::print_char:72 [ print_word::w#4 print_char::ch#2 char_cursor#41 ] main:2::mul_results_compare:13::print_word:32::print_byte:64::print_char:72 [ mul_results_compare::ma#0 line_cursor#17 print_char::ch#2 char_cursor#41 ] main:2::mul_results_compare:13::print_word:36::print_byte:64::print_char:72 [ line_cursor#17 print_char::ch#2 char_cursor#41 ] main:2::mul_tables_compare:11::print_word:96::print_byte:64::print_char:72 [ mul_tables_compare::kc_sqr#2 print_char::ch#2 char_cursor#41 ] main:2::mul_tables_compare:11::print_word:100::print_byte:64::print_char:72 [ print_char::ch#2 char_cursor#41 ] ) + [75] *((byte*) char_cursor#41) ← (byte) print_char::ch#2 [ char_cursor#41 ] ( main:2::mul_results_compare:13::print_word:32::print_byte:62::print_char:69 [ mul_results_compare::ma#0 line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#41 ] main:2::mul_results_compare:13::print_word:36::print_byte:62::print_char:69 [ line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#41 ] main:2::mul_tables_compare:11::print_word:96::print_byte:62::print_char:69 [ mul_tables_compare::kc_sqr#2 print_word::w#4 print_byte::b#2 char_cursor#41 ] main:2::mul_tables_compare:11::print_word:100::print_byte:62::print_char:69 [ print_word::w#4 print_byte::b#2 char_cursor#41 ] main:2::mul_results_compare:13::print_word:32::print_byte:64::print_char:69 [ mul_results_compare::ma#0 line_cursor#17 print_byte::b#2 char_cursor#41 ] main:2::mul_results_compare:13::print_word:36::print_byte:64::print_char:69 [ line_cursor#17 print_byte::b#2 char_cursor#41 ] main:2::mul_tables_compare:11::print_word:96::print_byte:64::print_char:69 [ mul_tables_compare::kc_sqr#2 print_byte::b#2 char_cursor#41 ] main:2::mul_tables_compare:11::print_word:100::print_byte:64::print_char:69 [ print_byte::b#2 char_cursor#41 ] main:2::mul_results_compare:13::print_word:32::print_byte:62::print_char:72 [ mul_results_compare::ma#0 line_cursor#17 print_word::w#4 char_cursor#41 ] main:2::mul_results_compare:13::print_word:36::print_byte:62::print_char:72 [ line_cursor#17 print_word::w#4 char_cursor#41 ] main:2::mul_tables_compare:11::print_word:96::print_byte:62::print_char:72 [ mul_tables_compare::kc_sqr#2 print_word::w#4 char_cursor#41 ] main:2::mul_tables_compare:11::print_word:100::print_byte:62::print_char:72 [ print_word::w#4 char_cursor#41 ] main:2::mul_results_compare:13::print_word:32::print_byte:64::print_char:72 [ mul_results_compare::ma#0 line_cursor#17 char_cursor#41 ] main:2::mul_results_compare:13::print_word:36::print_byte:64::print_char:72 [ line_cursor#17 char_cursor#41 ] main:2::mul_tables_compare:11::print_word:96::print_byte:64::print_char:72 [ mul_tables_compare::kc_sqr#2 char_cursor#41 ] main:2::mul_tables_compare:11::print_word:100::print_byte:64::print_char:72 [ char_cursor#41 ] ) + [76] (byte*) char_cursor#11 ← ++ (byte*) char_cursor#41 [ char_cursor#11 ] ( main:2::mul_results_compare:13::print_word:32::print_byte:62::print_char:69 [ mul_results_compare::ma#0 line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#11 ] main:2::mul_results_compare:13::print_word:36::print_byte:62::print_char:69 [ line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:96::print_byte:62::print_char:69 [ mul_tables_compare::kc_sqr#2 print_word::w#4 print_byte::b#2 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:100::print_byte:62::print_char:69 [ print_word::w#4 print_byte::b#2 char_cursor#11 ] main:2::mul_results_compare:13::print_word:32::print_byte:64::print_char:69 [ mul_results_compare::ma#0 line_cursor#17 print_byte::b#2 char_cursor#11 ] main:2::mul_results_compare:13::print_word:36::print_byte:64::print_char:69 [ line_cursor#17 print_byte::b#2 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:96::print_byte:64::print_char:69 [ mul_tables_compare::kc_sqr#2 print_byte::b#2 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:100::print_byte:64::print_char:69 [ print_byte::b#2 char_cursor#11 ] main:2::mul_results_compare:13::print_word:32::print_byte:62::print_char:72 [ mul_results_compare::ma#0 line_cursor#17 print_word::w#4 char_cursor#11 ] main:2::mul_results_compare:13::print_word:36::print_byte:62::print_char:72 [ line_cursor#17 print_word::w#4 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:96::print_byte:62::print_char:72 [ mul_tables_compare::kc_sqr#2 print_word::w#4 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:100::print_byte:62::print_char:72 [ print_word::w#4 char_cursor#11 ] main:2::mul_results_compare:13::print_word:32::print_byte:64::print_char:72 [ mul_results_compare::ma#0 line_cursor#17 char_cursor#11 ] main:2::mul_results_compare:13::print_word:36::print_byte:64::print_char:72 [ line_cursor#17 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:96::print_byte:64::print_char:72 [ mul_tables_compare::kc_sqr#2 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:100::print_byte:64::print_char:72 [ char_cursor#11 ] ) + to:print_char::@return +print_char::@return: scope:[print_char] from print_char + [77] return [ char_cursor#11 ] ( main:2::mul_results_compare:13::print_word:32::print_byte:62::print_char:69 [ mul_results_compare::ma#0 line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#11 ] main:2::mul_results_compare:13::print_word:36::print_byte:62::print_char:69 [ line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:96::print_byte:62::print_char:69 [ mul_tables_compare::kc_sqr#2 print_word::w#4 print_byte::b#2 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:100::print_byte:62::print_char:69 [ print_word::w#4 print_byte::b#2 char_cursor#11 ] main:2::mul_results_compare:13::print_word:32::print_byte:64::print_char:69 [ mul_results_compare::ma#0 line_cursor#17 print_byte::b#2 char_cursor#11 ] main:2::mul_results_compare:13::print_word:36::print_byte:64::print_char:69 [ line_cursor#17 print_byte::b#2 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:96::print_byte:64::print_char:69 [ mul_tables_compare::kc_sqr#2 print_byte::b#2 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:100::print_byte:64::print_char:69 [ print_byte::b#2 char_cursor#11 ] main:2::mul_results_compare:13::print_word:32::print_byte:62::print_char:72 [ mul_results_compare::ma#0 line_cursor#17 print_word::w#4 char_cursor#11 ] main:2::mul_results_compare:13::print_word:36::print_byte:62::print_char:72 [ line_cursor#17 print_word::w#4 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:96::print_byte:62::print_char:72 [ mul_tables_compare::kc_sqr#2 print_word::w#4 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:100::print_byte:62::print_char:72 [ print_word::w#4 char_cursor#11 ] main:2::mul_results_compare:13::print_word:32::print_byte:64::print_char:72 [ mul_results_compare::ma#0 line_cursor#17 char_cursor#11 ] main:2::mul_results_compare:13::print_word:36::print_byte:64::print_char:72 [ line_cursor#17 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:96::print_byte:64::print_char:72 [ mul_tables_compare::kc_sqr#2 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:100::print_byte:64::print_char:72 [ char_cursor#11 ] ) + to:@return +asm_multiply: scope:[asm_multiply] from mul_results_compare::@8 + [78] *((const byte*) asm_multiply::memA#0) ← (byte) asm_multiply::a#0 [ asm_multiply::b#0 ] ( main:2::mul_results_compare:13::asm_multiply:25 [ mul_results_compare::a#5 mul_results_compare::b#2 mul_results_compare::ms#0 line_cursor#17 char_cursor#20 asm_multiply::b#0 ] ) + [79] *((const byte*) asm_multiply::memB#0) ← (byte) asm_multiply::b#0 [ ] ( main:2::mul_results_compare:13::asm_multiply:25 [ mul_results_compare::a#5 mul_results_compare::b#2 mul_results_compare::ms#0 line_cursor#17 char_cursor#20 ] ) + asm { ldamemAstasm1+1stasm3+1eor#$ffstasm2+1stasm4+1ldxmemBsecsm1:ldaasm_mul_sqr1_lo,xsm2:sbcasm_mul_sqr2_lo,xstamemAsm3:ldaasm_mul_sqr1_hi,xsm4:sbcasm_mul_sqr2_hi,xstamemB } + [81] (word) asm_multiply::return#0 ← *((const byte*) asm_multiply::memB#0) w= *((const byte*) asm_multiply::memA#0) [ asm_multiply::return#0 ] ( main:2::mul_results_compare:13::asm_multiply:25 [ mul_results_compare::a#5 mul_results_compare::b#2 mul_results_compare::ms#0 line_cursor#17 char_cursor#20 asm_multiply::return#0 ] ) + to:asm_multiply::@return +asm_multiply::@return: scope:[asm_multiply] from asm_multiply + [82] return [ asm_multiply::return#0 ] ( main:2::mul_results_compare:13::asm_multiply:25 [ mul_results_compare::a#5 mul_results_compare::b#2 mul_results_compare::ms#0 line_cursor#17 char_cursor#20 asm_multiply::return#0 ] ) + to:@return +slow_multiply: scope:[slow_multiply] from mul_results_compare::@2 + [83] if((byte) slow_multiply::a#0<=(byte/signed byte/word/signed word) 0) goto slow_multiply::@1 [ slow_multiply::a#0 slow_multiply::b#0 ] ( main:2::mul_results_compare:13::slow_multiply:20 [ mul_results_compare::a#5 mul_results_compare::b#2 line_cursor#17 char_cursor#20 slow_multiply::a#0 slow_multiply::b#0 ] ) + to:slow_multiply::@2 +slow_multiply::@2: scope:[slow_multiply] from slow_multiply slow_multiply::@2 + [84] (byte) slow_multiply::i#2 ← phi( slow_multiply::@2/(byte) slow_multiply::i#1 slow_multiply/(byte/signed byte/word/signed word) 0 ) [ slow_multiply::a#0 slow_multiply::b#0 slow_multiply::m#3 slow_multiply::i#2 ] ( main:2::mul_results_compare:13::slow_multiply:20 [ mul_results_compare::a#5 mul_results_compare::b#2 line_cursor#17 char_cursor#20 slow_multiply::a#0 slow_multiply::b#0 slow_multiply::m#3 slow_multiply::i#2 ] ) + [84] (word) slow_multiply::m#3 ← phi( slow_multiply::@2/(word) slow_multiply::m#1 slow_multiply/(byte/signed byte/word/signed word) 0 ) [ slow_multiply::a#0 slow_multiply::b#0 slow_multiply::m#3 slow_multiply::i#2 ] ( main:2::mul_results_compare:13::slow_multiply:20 [ mul_results_compare::a#5 mul_results_compare::b#2 line_cursor#17 char_cursor#20 slow_multiply::a#0 slow_multiply::b#0 slow_multiply::m#3 slow_multiply::i#2 ] ) + [85] (word) slow_multiply::m#1 ← (word) slow_multiply::m#3 + (byte) slow_multiply::b#0 [ slow_multiply::a#0 slow_multiply::b#0 slow_multiply::i#2 slow_multiply::m#1 ] ( main:2::mul_results_compare:13::slow_multiply:20 [ mul_results_compare::a#5 mul_results_compare::b#2 line_cursor#17 char_cursor#20 slow_multiply::a#0 slow_multiply::b#0 slow_multiply::i#2 slow_multiply::m#1 ] ) + [86] (byte) slow_multiply::i#1 ← ++ (byte) slow_multiply::i#2 [ slow_multiply::a#0 slow_multiply::b#0 slow_multiply::m#1 slow_multiply::i#1 ] ( main:2::mul_results_compare:13::slow_multiply:20 [ mul_results_compare::a#5 mul_results_compare::b#2 line_cursor#17 char_cursor#20 slow_multiply::a#0 slow_multiply::b#0 slow_multiply::m#1 slow_multiply::i#1 ] ) + [87] if((byte) slow_multiply::i#1!=(byte) slow_multiply::a#0) goto slow_multiply::@2 [ slow_multiply::a#0 slow_multiply::b#0 slow_multiply::m#1 slow_multiply::i#1 ] ( main:2::mul_results_compare:13::slow_multiply:20 [ mul_results_compare::a#5 mul_results_compare::b#2 line_cursor#17 char_cursor#20 slow_multiply::a#0 slow_multiply::b#0 slow_multiply::m#1 slow_multiply::i#1 ] ) + to:slow_multiply::@1 +slow_multiply::@1: scope:[slow_multiply] from slow_multiply slow_multiply::@2 + [88] (word) slow_multiply::return#0 ← phi( slow_multiply/(byte/signed byte/word/signed word) 0 slow_multiply::@2/(word) slow_multiply::m#1 ) [ slow_multiply::return#0 ] ( main:2::mul_results_compare:13::slow_multiply:20 [ mul_results_compare::a#5 mul_results_compare::b#2 line_cursor#17 char_cursor#20 slow_multiply::return#0 ] ) + to:slow_multiply::@return +slow_multiply::@return: scope:[slow_multiply] from slow_multiply::@1 + [89] return [ slow_multiply::return#0 ] ( main:2::mul_results_compare:13::slow_multiply:20 [ mul_results_compare::a#5 mul_results_compare::b#2 line_cursor#17 char_cursor#20 slow_multiply::return#0 ] ) + to:@return +mul_tables_compare: scope:[mul_tables_compare] from main::@3 + [90] phi() [ ] ( main:2::mul_tables_compare:11 [ ] ) + to:mul_tables_compare::@1 +mul_tables_compare::@1: scope:[mul_tables_compare] from mul_tables_compare mul_tables_compare::@2 + [91] (byte*) mul_tables_compare::asm_sqr#2 ← phi( mul_tables_compare/(const byte[512]) asm_mul_sqr1_lo#0 mul_tables_compare::@2/(byte*) mul_tables_compare::asm_sqr#1 ) [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 ] ( main:2::mul_tables_compare:11 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 ] ) + [91] (byte*) mul_tables_compare::kc_sqr#2 ← phi( mul_tables_compare/(const byte[512]) mul_sqr1_lo#0 mul_tables_compare::@2/(byte*) mul_tables_compare::kc_sqr#1 ) [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 ] ( main:2::mul_tables_compare:11 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 ] ) + [92] if(*((byte*) mul_tables_compare::kc_sqr#2)==*((byte*) mul_tables_compare::asm_sqr#2)) goto mul_tables_compare::@2 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 ] ( main:2::mul_tables_compare:11 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 ] ) + to:mul_tables_compare::@3 +mul_tables_compare::@3: scope:[mul_tables_compare] from mul_tables_compare::@1 + [93] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 2 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 ] ( main:2::mul_tables_compare:11 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 ] ) + [94] call print_str param-assignment [ char_cursor#2 mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 ] ( main:2::mul_tables_compare:11 [ char_cursor#2 mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 ] ) + to:mul_tables_compare::@6 +mul_tables_compare::@6: scope:[mul_tables_compare] from mul_tables_compare::@3 + [95] (word) print_word::w#0 ← ((word)) (byte*) mul_tables_compare::asm_sqr#2 [ char_cursor#2 print_word::w#0 mul_tables_compare::kc_sqr#2 ] ( main:2::mul_tables_compare:11 [ char_cursor#2 print_word::w#0 mul_tables_compare::kc_sqr#2 ] ) + [96] call print_word param-assignment [ char_cursor#11 mul_tables_compare::kc_sqr#2 ] ( main:2::mul_tables_compare:11 [ char_cursor#11 mul_tables_compare::kc_sqr#2 ] ) + to:mul_tables_compare::@7 +mul_tables_compare::@7: scope:[mul_tables_compare] from mul_tables_compare::@6 + [97] phi() [ char_cursor#11 mul_tables_compare::kc_sqr#2 ] ( main:2::mul_tables_compare:11 [ char_cursor#11 mul_tables_compare::kc_sqr#2 ] ) + [98] call print_str param-assignment [ char_cursor#2 mul_tables_compare::kc_sqr#2 ] ( main:2::mul_tables_compare:11 [ char_cursor#2 mul_tables_compare::kc_sqr#2 ] ) + to:mul_tables_compare::@8 +mul_tables_compare::@8: scope:[mul_tables_compare] from mul_tables_compare::@7 + [99] (word) print_word::w#1 ← ((word)) (byte*) mul_tables_compare::kc_sqr#2 [ char_cursor#2 print_word::w#1 ] ( main:2::mul_tables_compare:11 [ char_cursor#2 print_word::w#1 ] ) + [100] call print_word param-assignment [ char_cursor#11 ] ( main:2::mul_tables_compare:11 [ char_cursor#11 ] ) + to:mul_tables_compare::@return +mul_tables_compare::@return: scope:[mul_tables_compare] from mul_tables_compare::@10 mul_tables_compare::@8 + [101] (byte*) line_cursor#17 ← phi( mul_tables_compare::@10/(byte*) line_cursor#1 mul_tables_compare::@8/((byte*))(word/signed word) 1024 ) [ line_cursor#17 char_cursor#20 ] ( main:2::mul_tables_compare:11 [ line_cursor#17 char_cursor#20 ] ) + [101] (byte*) char_cursor#20 ← phi( mul_tables_compare::@10/(byte*~) char_cursor#100 mul_tables_compare::@8/(byte*) char_cursor#11 ) [ line_cursor#17 char_cursor#20 ] ( main:2::mul_tables_compare:11 [ line_cursor#17 char_cursor#20 ] ) + [102] return [ line_cursor#17 char_cursor#20 ] ( main:2::mul_tables_compare:11 [ line_cursor#17 char_cursor#20 ] ) + to:@return +mul_tables_compare::@2: scope:[mul_tables_compare] from mul_tables_compare::@1 + [103] (byte*) mul_tables_compare::asm_sqr#1 ← ++ (byte*) mul_tables_compare::asm_sqr#2 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#1 ] ( main:2::mul_tables_compare:11 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#1 ] ) + [104] (byte*) mul_tables_compare::kc_sqr#1 ← ++ (byte*) mul_tables_compare::kc_sqr#2 [ mul_tables_compare::kc_sqr#1 mul_tables_compare::asm_sqr#1 ] ( main:2::mul_tables_compare:11 [ mul_tables_compare::kc_sqr#1 mul_tables_compare::asm_sqr#1 ] ) + [105] if((byte*) mul_tables_compare::kc_sqr#1<(const byte[512]) mul_sqr1_lo#0+(word/signed word) 512*(byte/signed byte/word/signed word) 4) goto mul_tables_compare::@1 [ mul_tables_compare::kc_sqr#1 mul_tables_compare::asm_sqr#1 ] ( main:2::mul_tables_compare:11 [ mul_tables_compare::kc_sqr#1 mul_tables_compare::asm_sqr#1 ] ) + to:mul_tables_compare::@5 +mul_tables_compare::@5: scope:[mul_tables_compare] from mul_tables_compare::@2 + [106] phi() [ ] ( main:2::mul_tables_compare:11 [ ] ) + [107] call print_str param-assignment [ char_cursor#2 ] ( main:2::mul_tables_compare:11 [ char_cursor#2 ] ) + to:mul_tables_compare::@10 +mul_tables_compare::@10: scope:[mul_tables_compare] from mul_tables_compare::@5 + [108] phi() [ char_cursor#2 ] ( main:2::mul_tables_compare:11 [ char_cursor#2 ] ) + [109] call print_ln param-assignment [ line_cursor#1 ] ( main:2::mul_tables_compare:11 [ line_cursor#1 ] ) + [110] (byte*~) char_cursor#100 ← (byte*) line_cursor#1 [ line_cursor#1 char_cursor#100 ] ( main:2::mul_tables_compare:11 [ line_cursor#1 char_cursor#100 ] ) + to:mul_tables_compare::@return +init_mul_tables_asm: scope:[init_mul_tables_asm] from main::@2 asm { ldx#$00txa.byte$c9lb1:tyaadc#$00ml1:staasm_mul_sqr1_hi,xtaycmp#$40txarorml9:adc#$00staml9+1inxml0:staasm_mul_sqr1_lo,xbnelb1incml0+2incml1+2clcinybnelb1ldx#$00ldy#$ff!:ldaasm_mul_sqr1_hi+1,xstaasm_mul_sqr2_hi+$100,xldaasm_mul_sqr1_hi,xstaasm_mul_sqr2_hi,yldaasm_mul_sqr1_lo+1,xstaasm_mul_sqr2_lo+$100,xldaasm_mul_sqr1_lo,xstaasm_mul_sqr2_lo,ydeyinxbne!- } - [61] *((const byte*) init_mul_tables_asm::mem#0) ← *((const byte[512]) asm_mul_sqr1_lo#0) [ ] ( main:2::init_mul_tables_asm:7 [ ] ) - [62] *((const byte*) init_mul_tables_asm::mem#0) ← *((const byte[512]) asm_mul_sqr1_hi#0) [ ] ( main:2::init_mul_tables_asm:7 [ ] ) - [63] *((const byte*) init_mul_tables_asm::mem#0) ← *((const byte[512]) asm_mul_sqr2_lo#0) [ ] ( main:2::init_mul_tables_asm:7 [ ] ) - [64] *((const byte*) init_mul_tables_asm::mem#0) ← *((const byte[512]) asm_mul_sqr2_hi#0) [ ] ( main:2::init_mul_tables_asm:7 [ ] ) + [112] *((const byte*) init_mul_tables_asm::mem#0) ← *((const byte[512]) asm_mul_sqr1_lo#0) [ ] ( main:2::init_mul_tables_asm:9 [ ] ) + [113] *((const byte*) init_mul_tables_asm::mem#0) ← *((const byte[512]) asm_mul_sqr1_hi#0) [ ] ( main:2::init_mul_tables_asm:9 [ ] ) + [114] *((const byte*) init_mul_tables_asm::mem#0) ← *((const byte[512]) asm_mul_sqr2_lo#0) [ ] ( main:2::init_mul_tables_asm:9 [ ] ) + [115] *((const byte*) init_mul_tables_asm::mem#0) ← *((const byte[512]) asm_mul_sqr2_hi#0) [ ] ( main:2::init_mul_tables_asm:9 [ ] ) to:init_mul_tables_asm::@return init_mul_tables_asm::@return: scope:[init_mul_tables_asm] from init_mul_tables_asm - [65] return [ ] ( main:2::init_mul_tables_asm:7 [ ] ) + [116] return [ ] ( main:2::init_mul_tables_asm:9 [ ] ) to:@return -init_mul_tables: scope:[init_mul_tables] from main - [66] phi() [ ] ( main:2::init_mul_tables:5 [ ] ) +init_mul_tables: scope:[init_mul_tables] from main::@1 + [117] phi() [ ] ( main:2::init_mul_tables:7 [ ] ) to:init_mul_tables::@1 init_mul_tables::@1: scope:[init_mul_tables] from init_mul_tables init_mul_tables::@2 - [67] (byte) init_mul_tables::x_2#3 ← phi( init_mul_tables/(byte/signed byte/word/signed word) 0 init_mul_tables::@2/(byte) init_mul_tables::x_2#2 ) [ init_mul_tables::c#2 init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::x_2#3 ] ( main:2::init_mul_tables:5 [ init_mul_tables::c#2 init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::x_2#3 ] ) - [67] (byte*) init_mul_tables::sqr1_hi#2 ← phi( init_mul_tables/(const byte[512]) mul_sqr1_hi#0+(byte/signed byte/word/signed word) 1 init_mul_tables::@2/(byte*) init_mul_tables::sqr1_hi#1 ) [ init_mul_tables::c#2 init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::x_2#3 ] ( main:2::init_mul_tables:5 [ init_mul_tables::c#2 init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::x_2#3 ] ) - [67] (byte*) init_mul_tables::sqr1_lo#2 ← phi( init_mul_tables/(const byte[512]) mul_sqr1_lo#0+(byte/signed byte/word/signed word) 1 init_mul_tables::@2/(byte*) init_mul_tables::sqr1_lo#1 ) [ init_mul_tables::c#2 init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::x_2#3 ] ( main:2::init_mul_tables:5 [ init_mul_tables::c#2 init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::x_2#3 ] ) - [67] (word) init_mul_tables::sqr#4 ← phi( init_mul_tables/(byte/signed byte/word/signed word) 0 init_mul_tables::@2/(word) init_mul_tables::sqr#1 ) [ init_mul_tables::c#2 init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::x_2#3 ] ( main:2::init_mul_tables:5 [ init_mul_tables::c#2 init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::x_2#3 ] ) - [67] (byte) init_mul_tables::c#2 ← phi( init_mul_tables/(byte/signed byte/word/signed word) 0 init_mul_tables::@2/(byte) init_mul_tables::c#1 ) [ init_mul_tables::c#2 init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::x_2#3 ] ( main:2::init_mul_tables:5 [ init_mul_tables::c#2 init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::x_2#3 ] ) - [68] (byte) init_mul_tables::c#1 ← ++ (byte) init_mul_tables::c#2 [ init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::x_2#3 init_mul_tables::c#1 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::x_2#3 init_mul_tables::c#1 ] ) - [69] (byte~) init_mul_tables::$2 ← (byte) init_mul_tables::c#1 & (byte/signed byte/word/signed word) 1 [ init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::x_2#3 init_mul_tables::c#1 init_mul_tables::$2 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::x_2#3 init_mul_tables::c#1 init_mul_tables::$2 ] ) - [70] if((byte~) init_mul_tables::$2!=(byte/signed byte/word/signed word) 0) goto init_mul_tables::@2 [ init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::x_2#3 init_mul_tables::c#1 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::x_2#3 init_mul_tables::c#1 ] ) + [118] (byte) init_mul_tables::x_2#3 ← phi( init_mul_tables/(byte/signed byte/word/signed word) 0 init_mul_tables::@2/(byte) init_mul_tables::x_2#2 ) [ init_mul_tables::c#2 init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::x_2#3 ] ( main:2::init_mul_tables:7 [ init_mul_tables::c#2 init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::x_2#3 ] ) + [118] (byte*) init_mul_tables::sqr1_hi#2 ← phi( init_mul_tables/(const byte[512]) mul_sqr1_hi#0+(byte/signed byte/word/signed word) 1 init_mul_tables::@2/(byte*) init_mul_tables::sqr1_hi#1 ) [ init_mul_tables::c#2 init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::x_2#3 ] ( main:2::init_mul_tables:7 [ init_mul_tables::c#2 init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::x_2#3 ] ) + [118] (byte*) init_mul_tables::sqr1_lo#2 ← phi( init_mul_tables/(const byte[512]) mul_sqr1_lo#0+(byte/signed byte/word/signed word) 1 init_mul_tables::@2/(byte*) init_mul_tables::sqr1_lo#1 ) [ init_mul_tables::c#2 init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::x_2#3 ] ( main:2::init_mul_tables:7 [ init_mul_tables::c#2 init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::x_2#3 ] ) + [118] (word) init_mul_tables::sqr#4 ← phi( init_mul_tables/(byte/signed byte/word/signed word) 0 init_mul_tables::@2/(word) init_mul_tables::sqr#1 ) [ init_mul_tables::c#2 init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::x_2#3 ] ( main:2::init_mul_tables:7 [ init_mul_tables::c#2 init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::x_2#3 ] ) + [118] (byte) init_mul_tables::c#2 ← phi( init_mul_tables/(byte/signed byte/word/signed word) 0 init_mul_tables::@2/(byte) init_mul_tables::c#1 ) [ init_mul_tables::c#2 init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::x_2#3 ] ( main:2::init_mul_tables:7 [ init_mul_tables::c#2 init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::x_2#3 ] ) + [119] (byte) init_mul_tables::c#1 ← ++ (byte) init_mul_tables::c#2 [ init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::x_2#3 init_mul_tables::c#1 ] ( main:2::init_mul_tables:7 [ init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::x_2#3 init_mul_tables::c#1 ] ) + [120] (byte~) init_mul_tables::$2 ← (byte) init_mul_tables::c#1 & (byte/signed byte/word/signed word) 1 [ init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::x_2#3 init_mul_tables::c#1 init_mul_tables::$2 ] ( main:2::init_mul_tables:7 [ init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::x_2#3 init_mul_tables::c#1 init_mul_tables::$2 ] ) + [121] if((byte~) init_mul_tables::$2!=(byte/signed byte/word/signed word) 0) goto init_mul_tables::@2 [ init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::x_2#3 init_mul_tables::c#1 ] ( main:2::init_mul_tables:7 [ init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::x_2#3 init_mul_tables::c#1 ] ) to:init_mul_tables::@5 init_mul_tables::@5: scope:[init_mul_tables] from init_mul_tables::@1 - [71] (byte) init_mul_tables::x_2#1 ← ++ (byte) init_mul_tables::x_2#3 [ init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#1 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#1 ] ) - [72] (word) init_mul_tables::sqr#2 ← ++ (word) init_mul_tables::sqr#4 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#1 init_mul_tables::sqr#2 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#1 init_mul_tables::sqr#2 ] ) + [122] (byte) init_mul_tables::x_2#1 ← ++ (byte) init_mul_tables::x_2#3 [ init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#1 ] ( main:2::init_mul_tables:7 [ init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#1 ] ) + [123] (word) init_mul_tables::sqr#2 ← ++ (word) init_mul_tables::sqr#4 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#1 init_mul_tables::sqr#2 ] ( main:2::init_mul_tables:7 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#1 init_mul_tables::sqr#2 ] ) to:init_mul_tables::@2 init_mul_tables::@2: scope:[init_mul_tables] from init_mul_tables::@1 init_mul_tables::@5 - [73] (byte) init_mul_tables::x_2#2 ← phi( init_mul_tables::@1/(byte) init_mul_tables::x_2#3 init_mul_tables::@5/(byte) init_mul_tables::x_2#1 ) [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 ] ) - [73] (word) init_mul_tables::sqr#3 ← phi( init_mul_tables::@1/(word) init_mul_tables::sqr#4 init_mul_tables::@5/(word) init_mul_tables::sqr#2 ) [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 ] ) - [74] (byte~) init_mul_tables::$5 ← < (word) init_mul_tables::sqr#3 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 init_mul_tables::$5 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 init_mul_tables::$5 ] ) - [75] *((byte*) init_mul_tables::sqr1_lo#2) ← (byte~) init_mul_tables::$5 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 ] ) - [76] (byte~) init_mul_tables::$6 ← > (word) init_mul_tables::sqr#3 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 init_mul_tables::$6 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 init_mul_tables::$6 ] ) - [77] *((byte*) init_mul_tables::sqr1_hi#2) ← (byte~) init_mul_tables::$6 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 ] ) - [78] (byte*) init_mul_tables::sqr1_hi#1 ← ++ (byte*) init_mul_tables::sqr1_hi#2 [ init_mul_tables::sqr1_lo#2 init_mul_tables::c#1 init_mul_tables::sqr1_hi#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr1_lo#2 init_mul_tables::c#1 init_mul_tables::sqr1_hi#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 ] ) - [79] (word) init_mul_tables::sqr#1 ← (word) init_mul_tables::sqr#3 + (byte) init_mul_tables::x_2#2 [ init_mul_tables::sqr1_lo#2 init_mul_tables::c#1 init_mul_tables::sqr#1 init_mul_tables::sqr1_hi#1 init_mul_tables::x_2#2 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr1_lo#2 init_mul_tables::c#1 init_mul_tables::sqr#1 init_mul_tables::sqr1_hi#1 init_mul_tables::x_2#2 ] ) - [80] (byte*) init_mul_tables::sqr1_lo#1 ← ++ (byte*) init_mul_tables::sqr1_lo#2 [ init_mul_tables::c#1 init_mul_tables::sqr#1 init_mul_tables::sqr1_lo#1 init_mul_tables::sqr1_hi#1 init_mul_tables::x_2#2 ] ( main:2::init_mul_tables:5 [ init_mul_tables::c#1 init_mul_tables::sqr#1 init_mul_tables::sqr1_lo#1 init_mul_tables::sqr1_hi#1 init_mul_tables::x_2#2 ] ) - [81] if((byte*) init_mul_tables::sqr1_lo#1!=(const byte[512]) mul_sqr1_lo#0+(word/signed word) 512) goto init_mul_tables::@1 [ init_mul_tables::c#1 init_mul_tables::sqr#1 init_mul_tables::sqr1_lo#1 init_mul_tables::sqr1_hi#1 init_mul_tables::x_2#2 ] ( main:2::init_mul_tables:5 [ init_mul_tables::c#1 init_mul_tables::sqr#1 init_mul_tables::sqr1_lo#1 init_mul_tables::sqr1_hi#1 init_mul_tables::x_2#2 ] ) + [124] (byte) init_mul_tables::x_2#2 ← phi( init_mul_tables::@1/(byte) init_mul_tables::x_2#3 init_mul_tables::@5/(byte) init_mul_tables::x_2#1 ) [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 ] ( main:2::init_mul_tables:7 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 ] ) + [124] (word) init_mul_tables::sqr#3 ← phi( init_mul_tables::@1/(word) init_mul_tables::sqr#4 init_mul_tables::@5/(word) init_mul_tables::sqr#2 ) [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 ] ( main:2::init_mul_tables:7 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 ] ) + [125] (byte~) init_mul_tables::$5 ← < (word) init_mul_tables::sqr#3 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 init_mul_tables::$5 ] ( main:2::init_mul_tables:7 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 init_mul_tables::$5 ] ) + [126] *((byte*) init_mul_tables::sqr1_lo#2) ← (byte~) init_mul_tables::$5 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 ] ( main:2::init_mul_tables:7 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 ] ) + [127] (byte~) init_mul_tables::$6 ← > (word) init_mul_tables::sqr#3 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 init_mul_tables::$6 ] ( main:2::init_mul_tables:7 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 init_mul_tables::$6 ] ) + [128] *((byte*) init_mul_tables::sqr1_hi#2) ← (byte~) init_mul_tables::$6 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 ] ( main:2::init_mul_tables:7 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 ] ) + [129] (byte*) init_mul_tables::sqr1_hi#1 ← ++ (byte*) init_mul_tables::sqr1_hi#2 [ init_mul_tables::sqr1_lo#2 init_mul_tables::c#1 init_mul_tables::sqr1_hi#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 ] ( main:2::init_mul_tables:7 [ init_mul_tables::sqr1_lo#2 init_mul_tables::c#1 init_mul_tables::sqr1_hi#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 ] ) + [130] (word) init_mul_tables::sqr#1 ← (word) init_mul_tables::sqr#3 + (byte) init_mul_tables::x_2#2 [ init_mul_tables::sqr1_lo#2 init_mul_tables::c#1 init_mul_tables::sqr#1 init_mul_tables::sqr1_hi#1 init_mul_tables::x_2#2 ] ( main:2::init_mul_tables:7 [ init_mul_tables::sqr1_lo#2 init_mul_tables::c#1 init_mul_tables::sqr#1 init_mul_tables::sqr1_hi#1 init_mul_tables::x_2#2 ] ) + [131] (byte*) init_mul_tables::sqr1_lo#1 ← ++ (byte*) init_mul_tables::sqr1_lo#2 [ init_mul_tables::c#1 init_mul_tables::sqr#1 init_mul_tables::sqr1_lo#1 init_mul_tables::sqr1_hi#1 init_mul_tables::x_2#2 ] ( main:2::init_mul_tables:7 [ init_mul_tables::c#1 init_mul_tables::sqr#1 init_mul_tables::sqr1_lo#1 init_mul_tables::sqr1_hi#1 init_mul_tables::x_2#2 ] ) + [132] if((byte*) init_mul_tables::sqr1_lo#1!=(const byte[512]) mul_sqr1_lo#0+(word/signed word) 512) goto init_mul_tables::@1 [ init_mul_tables::c#1 init_mul_tables::sqr#1 init_mul_tables::sqr1_lo#1 init_mul_tables::sqr1_hi#1 init_mul_tables::x_2#2 ] ( main:2::init_mul_tables:7 [ init_mul_tables::c#1 init_mul_tables::sqr#1 init_mul_tables::sqr1_lo#1 init_mul_tables::sqr1_hi#1 init_mul_tables::x_2#2 ] ) to:init_mul_tables::@3 init_mul_tables::@3: scope:[init_mul_tables] from init_mul_tables::@2 init_mul_tables::@4 - [82] (byte) init_mul_tables::dir#2 ← phi( init_mul_tables::@4/(byte) init_mul_tables::dir#3 init_mul_tables::@2/(byte/word/signed word) 255 ) [ init_mul_tables::x_255#2 init_mul_tables::sqr2_lo#2 init_mul_tables::sqr2_hi#2 init_mul_tables::dir#2 ] ( main:2::init_mul_tables:5 [ init_mul_tables::x_255#2 init_mul_tables::sqr2_lo#2 init_mul_tables::sqr2_hi#2 init_mul_tables::dir#2 ] ) - [82] (byte*) init_mul_tables::sqr2_hi#2 ← phi( init_mul_tables::@4/(byte*) init_mul_tables::sqr2_hi#1 init_mul_tables::@2/(const byte[512]) mul_sqr2_hi#0 ) [ init_mul_tables::x_255#2 init_mul_tables::sqr2_lo#2 init_mul_tables::sqr2_hi#2 init_mul_tables::dir#2 ] ( main:2::init_mul_tables:5 [ init_mul_tables::x_255#2 init_mul_tables::sqr2_lo#2 init_mul_tables::sqr2_hi#2 init_mul_tables::dir#2 ] ) - [82] (byte*) init_mul_tables::sqr2_lo#2 ← phi( init_mul_tables::@4/(byte*) init_mul_tables::sqr2_lo#1 init_mul_tables::@2/(const byte[512]) mul_sqr2_lo#0 ) [ init_mul_tables::x_255#2 init_mul_tables::sqr2_lo#2 init_mul_tables::sqr2_hi#2 init_mul_tables::dir#2 ] ( main:2::init_mul_tables:5 [ init_mul_tables::x_255#2 init_mul_tables::sqr2_lo#2 init_mul_tables::sqr2_hi#2 init_mul_tables::dir#2 ] ) - [82] (byte) init_mul_tables::x_255#2 ← phi( init_mul_tables::@4/(byte) init_mul_tables::x_255#1 init_mul_tables::@2/((byte))-(byte/signed byte/word/signed word) 1 ) [ init_mul_tables::x_255#2 init_mul_tables::sqr2_lo#2 init_mul_tables::sqr2_hi#2 init_mul_tables::dir#2 ] ( main:2::init_mul_tables:5 [ init_mul_tables::x_255#2 init_mul_tables::sqr2_lo#2 init_mul_tables::sqr2_hi#2 init_mul_tables::dir#2 ] ) - [83] *((byte*) init_mul_tables::sqr2_lo#2) ← *((const byte[512]) mul_sqr1_lo#0 + (byte) init_mul_tables::x_255#2) [ init_mul_tables::x_255#2 init_mul_tables::sqr2_lo#2 init_mul_tables::sqr2_hi#2 init_mul_tables::dir#2 ] ( main:2::init_mul_tables:5 [ init_mul_tables::x_255#2 init_mul_tables::sqr2_lo#2 init_mul_tables::sqr2_hi#2 init_mul_tables::dir#2 ] ) - [84] *((byte*) init_mul_tables::sqr2_hi#2) ← *((const byte[512]) mul_sqr1_hi#0 + (byte) init_mul_tables::x_255#2) [ init_mul_tables::x_255#2 init_mul_tables::sqr2_lo#2 init_mul_tables::sqr2_hi#2 init_mul_tables::dir#2 ] ( main:2::init_mul_tables:5 [ init_mul_tables::x_255#2 init_mul_tables::sqr2_lo#2 init_mul_tables::sqr2_hi#2 init_mul_tables::dir#2 ] ) - [85] (byte*) init_mul_tables::sqr2_hi#1 ← ++ (byte*) init_mul_tables::sqr2_hi#2 [ init_mul_tables::x_255#2 init_mul_tables::sqr2_lo#2 init_mul_tables::dir#2 init_mul_tables::sqr2_hi#1 ] ( main:2::init_mul_tables:5 [ init_mul_tables::x_255#2 init_mul_tables::sqr2_lo#2 init_mul_tables::dir#2 init_mul_tables::sqr2_hi#1 ] ) - [86] (byte) init_mul_tables::x_255#1 ← (byte) init_mul_tables::x_255#2 + (byte) init_mul_tables::dir#2 [ init_mul_tables::sqr2_lo#2 init_mul_tables::dir#2 init_mul_tables::x_255#1 init_mul_tables::sqr2_hi#1 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr2_lo#2 init_mul_tables::dir#2 init_mul_tables::x_255#1 init_mul_tables::sqr2_hi#1 ] ) - [87] if((byte) init_mul_tables::x_255#1!=(byte/signed byte/word/signed word) 0) goto init_mul_tables::@12 [ init_mul_tables::sqr2_lo#2 init_mul_tables::dir#2 init_mul_tables::x_255#1 init_mul_tables::sqr2_hi#1 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr2_lo#2 init_mul_tables::dir#2 init_mul_tables::x_255#1 init_mul_tables::sqr2_hi#1 ] ) + [133] (byte) init_mul_tables::dir#2 ← phi( init_mul_tables::@4/(byte) init_mul_tables::dir#3 init_mul_tables::@2/(byte/word/signed word) 255 ) [ init_mul_tables::x_255#2 init_mul_tables::sqr2_lo#2 init_mul_tables::sqr2_hi#2 init_mul_tables::dir#2 ] ( main:2::init_mul_tables:7 [ init_mul_tables::x_255#2 init_mul_tables::sqr2_lo#2 init_mul_tables::sqr2_hi#2 init_mul_tables::dir#2 ] ) + [133] (byte*) init_mul_tables::sqr2_hi#2 ← phi( init_mul_tables::@4/(byte*) init_mul_tables::sqr2_hi#1 init_mul_tables::@2/(const byte[512]) mul_sqr2_hi#0 ) [ init_mul_tables::x_255#2 init_mul_tables::sqr2_lo#2 init_mul_tables::sqr2_hi#2 init_mul_tables::dir#2 ] ( main:2::init_mul_tables:7 [ init_mul_tables::x_255#2 init_mul_tables::sqr2_lo#2 init_mul_tables::sqr2_hi#2 init_mul_tables::dir#2 ] ) + [133] (byte*) init_mul_tables::sqr2_lo#2 ← phi( init_mul_tables::@4/(byte*) init_mul_tables::sqr2_lo#1 init_mul_tables::@2/(const byte[512]) mul_sqr2_lo#0 ) [ init_mul_tables::x_255#2 init_mul_tables::sqr2_lo#2 init_mul_tables::sqr2_hi#2 init_mul_tables::dir#2 ] ( main:2::init_mul_tables:7 [ init_mul_tables::x_255#2 init_mul_tables::sqr2_lo#2 init_mul_tables::sqr2_hi#2 init_mul_tables::dir#2 ] ) + [133] (byte) init_mul_tables::x_255#2 ← phi( init_mul_tables::@4/(byte) init_mul_tables::x_255#1 init_mul_tables::@2/((byte))-(byte/signed byte/word/signed word) 1 ) [ init_mul_tables::x_255#2 init_mul_tables::sqr2_lo#2 init_mul_tables::sqr2_hi#2 init_mul_tables::dir#2 ] ( main:2::init_mul_tables:7 [ init_mul_tables::x_255#2 init_mul_tables::sqr2_lo#2 init_mul_tables::sqr2_hi#2 init_mul_tables::dir#2 ] ) + [134] *((byte*) init_mul_tables::sqr2_lo#2) ← *((const byte[512]) mul_sqr1_lo#0 + (byte) init_mul_tables::x_255#2) [ init_mul_tables::x_255#2 init_mul_tables::sqr2_lo#2 init_mul_tables::sqr2_hi#2 init_mul_tables::dir#2 ] ( main:2::init_mul_tables:7 [ init_mul_tables::x_255#2 init_mul_tables::sqr2_lo#2 init_mul_tables::sqr2_hi#2 init_mul_tables::dir#2 ] ) + [135] *((byte*) init_mul_tables::sqr2_hi#2) ← *((const byte[512]) mul_sqr1_hi#0 + (byte) init_mul_tables::x_255#2) [ init_mul_tables::x_255#2 init_mul_tables::sqr2_lo#2 init_mul_tables::sqr2_hi#2 init_mul_tables::dir#2 ] ( main:2::init_mul_tables:7 [ init_mul_tables::x_255#2 init_mul_tables::sqr2_lo#2 init_mul_tables::sqr2_hi#2 init_mul_tables::dir#2 ] ) + [136] (byte*) init_mul_tables::sqr2_hi#1 ← ++ (byte*) init_mul_tables::sqr2_hi#2 [ init_mul_tables::x_255#2 init_mul_tables::sqr2_lo#2 init_mul_tables::dir#2 init_mul_tables::sqr2_hi#1 ] ( main:2::init_mul_tables:7 [ init_mul_tables::x_255#2 init_mul_tables::sqr2_lo#2 init_mul_tables::dir#2 init_mul_tables::sqr2_hi#1 ] ) + [137] (byte) init_mul_tables::x_255#1 ← (byte) init_mul_tables::x_255#2 + (byte) init_mul_tables::dir#2 [ init_mul_tables::sqr2_lo#2 init_mul_tables::dir#2 init_mul_tables::x_255#1 init_mul_tables::sqr2_hi#1 ] ( main:2::init_mul_tables:7 [ init_mul_tables::sqr2_lo#2 init_mul_tables::dir#2 init_mul_tables::x_255#1 init_mul_tables::sqr2_hi#1 ] ) + [138] if((byte) init_mul_tables::x_255#1!=(byte/signed byte/word/signed word) 0) goto init_mul_tables::@12 [ init_mul_tables::sqr2_lo#2 init_mul_tables::dir#2 init_mul_tables::x_255#1 init_mul_tables::sqr2_hi#1 ] ( main:2::init_mul_tables:7 [ init_mul_tables::sqr2_lo#2 init_mul_tables::dir#2 init_mul_tables::x_255#1 init_mul_tables::sqr2_hi#1 ] ) to:init_mul_tables::@4 init_mul_tables::@4: scope:[init_mul_tables] from init_mul_tables::@12 init_mul_tables::@3 - [88] (byte) init_mul_tables::dir#3 ← phi( init_mul_tables::@12/(byte) init_mul_tables::dir#2 init_mul_tables::@3/(byte/signed byte/word/signed word) 1 ) [ init_mul_tables::sqr2_lo#2 init_mul_tables::x_255#1 init_mul_tables::sqr2_hi#1 init_mul_tables::dir#3 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr2_lo#2 init_mul_tables::x_255#1 init_mul_tables::sqr2_hi#1 init_mul_tables::dir#3 ] ) - [89] (byte*) init_mul_tables::sqr2_lo#1 ← ++ (byte*) init_mul_tables::sqr2_lo#2 [ init_mul_tables::x_255#1 init_mul_tables::sqr2_lo#1 init_mul_tables::sqr2_hi#1 init_mul_tables::dir#3 ] ( main:2::init_mul_tables:5 [ init_mul_tables::x_255#1 init_mul_tables::sqr2_lo#1 init_mul_tables::sqr2_hi#1 init_mul_tables::dir#3 ] ) - [90] if((byte*) init_mul_tables::sqr2_lo#1!=(const byte[512]) mul_sqr2_lo#0+(word/signed word) 511) goto init_mul_tables::@3 [ init_mul_tables::x_255#1 init_mul_tables::sqr2_lo#1 init_mul_tables::sqr2_hi#1 init_mul_tables::dir#3 ] ( main:2::init_mul_tables:5 [ init_mul_tables::x_255#1 init_mul_tables::sqr2_lo#1 init_mul_tables::sqr2_hi#1 init_mul_tables::dir#3 ] ) + [139] (byte) init_mul_tables::dir#3 ← phi( init_mul_tables::@12/(byte) init_mul_tables::dir#2 init_mul_tables::@3/(byte/signed byte/word/signed word) 1 ) [ init_mul_tables::sqr2_lo#2 init_mul_tables::x_255#1 init_mul_tables::sqr2_hi#1 init_mul_tables::dir#3 ] ( main:2::init_mul_tables:7 [ init_mul_tables::sqr2_lo#2 init_mul_tables::x_255#1 init_mul_tables::sqr2_hi#1 init_mul_tables::dir#3 ] ) + [140] (byte*) init_mul_tables::sqr2_lo#1 ← ++ (byte*) init_mul_tables::sqr2_lo#2 [ init_mul_tables::x_255#1 init_mul_tables::sqr2_lo#1 init_mul_tables::sqr2_hi#1 init_mul_tables::dir#3 ] ( main:2::init_mul_tables:7 [ init_mul_tables::x_255#1 init_mul_tables::sqr2_lo#1 init_mul_tables::sqr2_hi#1 init_mul_tables::dir#3 ] ) + [141] if((byte*) init_mul_tables::sqr2_lo#1!=(const byte[512]) mul_sqr2_lo#0+(word/signed word) 511) goto init_mul_tables::@3 [ init_mul_tables::x_255#1 init_mul_tables::sqr2_lo#1 init_mul_tables::sqr2_hi#1 init_mul_tables::dir#3 ] ( main:2::init_mul_tables:7 [ init_mul_tables::x_255#1 init_mul_tables::sqr2_lo#1 init_mul_tables::sqr2_hi#1 init_mul_tables::dir#3 ] ) to:init_mul_tables::@8 init_mul_tables::@8: scope:[init_mul_tables] from init_mul_tables::@4 - [91] *((const byte[512]) mul_sqr2_lo#0+(word/signed word) 511) ← *((const byte[512]) mul_sqr1_lo#0+(word/signed word) 256) [ ] ( main:2::init_mul_tables:5 [ ] ) - [92] *((const byte[512]) mul_sqr2_hi#0+(word/signed word) 511) ← *((const byte[512]) mul_sqr1_hi#0+(word/signed word) 256) [ ] ( main:2::init_mul_tables:5 [ ] ) + [142] *((const byte[512]) mul_sqr2_lo#0+(word/signed word) 511) ← *((const byte[512]) mul_sqr1_lo#0+(word/signed word) 256) [ ] ( main:2::init_mul_tables:7 [ ] ) + [143] *((const byte[512]) mul_sqr2_hi#0+(word/signed word) 511) ← *((const byte[512]) mul_sqr1_hi#0+(word/signed word) 256) [ ] ( main:2::init_mul_tables:7 [ ] ) to:init_mul_tables::@return init_mul_tables::@return: scope:[init_mul_tables] from init_mul_tables::@8 - [93] return [ ] ( main:2::init_mul_tables:5 [ ] ) + [144] return [ ] ( main:2::init_mul_tables:7 [ ] ) to:@return init_mul_tables::@12: scope:[init_mul_tables] from init_mul_tables::@3 - [94] phi() [ init_mul_tables::sqr2_lo#2 init_mul_tables::dir#2 init_mul_tables::x_255#1 init_mul_tables::sqr2_hi#1 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr2_lo#2 init_mul_tables::dir#2 init_mul_tables::x_255#1 init_mul_tables::sqr2_hi#1 ] ) + [145] phi() [ init_mul_tables::sqr2_lo#2 init_mul_tables::dir#2 init_mul_tables::x_255#1 init_mul_tables::sqr2_hi#1 ] ( main:2::init_mul_tables:7 [ init_mul_tables::sqr2_lo#2 init_mul_tables::dir#2 init_mul_tables::x_255#1 init_mul_tables::sqr2_hi#1 ] ) to:init_mul_tables::@4 +print_cls: scope:[print_cls] from main + [146] phi() [ ] ( main:2::print_cls:5 [ ] ) + to:print_cls::@1 +print_cls::@1: scope:[print_cls] from print_cls print_cls::@1 + [147] (byte*) print_cls::sc#2 ← phi( print_cls/((byte*))(word/signed word) 1024 print_cls::@1/(byte*) print_cls::sc#1 ) [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] ) + [148] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] ) + [149] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) + [150] if((byte*) print_cls::sc#1!=(word/signed word) 1024+(word/signed word) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) + to:print_cls::@return +print_cls::@return: scope:[print_cls] from print_cls::@1 + [151] return [ ] ( main:2::print_cls:5 [ ] ) + to:@return DOMINATORS @begin dominated by @begin -@10 dominated by @10 @begin -@end dominated by @end @10 @begin -main dominated by main @10 @begin -main::@1 dominated by main main::@1 @10 @begin -main::@2 dominated by main main::@1 main::@2 @10 @begin -main::@return dominated by main::@return main main::@1 main::@2 @10 @begin -mul_tables_compare dominated by main main::@1 main::@2 @10 @begin mul_tables_compare -mul_tables_compare::@1 dominated by main main::@1 main::@2 @10 @begin mul_tables_compare mul_tables_compare::@1 -mul_tables_compare::@3 dominated by main main::@1 main::@2 @10 @begin mul_tables_compare mul_tables_compare::@1 mul_tables_compare::@3 -mul_tables_compare::@6 dominated by main main::@1 main::@2 @10 @begin mul_tables_compare mul_tables_compare::@1 mul_tables_compare::@3 mul_tables_compare::@6 -mul_tables_compare::@7 dominated by main main::@1 main::@2 @10 @begin mul_tables_compare mul_tables_compare::@1 mul_tables_compare::@3 mul_tables_compare::@7 mul_tables_compare::@6 -mul_tables_compare::@8 dominated by main main::@1 main::@2 @10 @begin mul_tables_compare mul_tables_compare::@1 mul_tables_compare::@3 mul_tables_compare::@7 mul_tables_compare::@6 mul_tables_compare::@8 -mul_tables_compare::@9 dominated by main main::@1 main::@2 @10 @begin mul_tables_compare mul_tables_compare::@1 mul_tables_compare::@3 mul_tables_compare::@7 mul_tables_compare::@6 mul_tables_compare::@9 mul_tables_compare::@8 -mul_tables_compare::@return dominated by main main::@1 main::@2 @10 @begin mul_tables_compare mul_tables_compare::@return mul_tables_compare::@1 -mul_tables_compare::@2 dominated by main main::@1 main::@2 @10 @begin mul_tables_compare mul_tables_compare::@1 mul_tables_compare::@2 -print_word dominated by main print_word main::@1 main::@2 @10 @begin mul_tables_compare mul_tables_compare::@1 mul_tables_compare::@3 mul_tables_compare::@7 mul_tables_compare::@6 -print_word::@1 dominated by main print_word main::@1 main::@2 print_word::@1 @10 @begin mul_tables_compare mul_tables_compare::@1 mul_tables_compare::@3 mul_tables_compare::@7 mul_tables_compare::@6 -print_word::@return dominated by main print_word main::@1 main::@2 print_word::@1 @10 @begin mul_tables_compare mul_tables_compare::@1 mul_tables_compare::@3 print_word::@return mul_tables_compare::@7 mul_tables_compare::@6 -print_byte dominated by main print_word main::@1 main::@2 @10 @begin mul_tables_compare print_byte mul_tables_compare::@1 mul_tables_compare::@3 mul_tables_compare::@7 mul_tables_compare::@6 -print_byte::@1 dominated by main print_word main::@1 main::@2 print_byte::@1 @10 @begin mul_tables_compare print_byte mul_tables_compare::@1 mul_tables_compare::@3 mul_tables_compare::@7 mul_tables_compare::@6 -print_byte::@return dominated by main print_word main::@1 main::@2 print_byte::@1 @10 @begin mul_tables_compare print_byte print_byte::@return mul_tables_compare::@1 mul_tables_compare::@3 mul_tables_compare::@7 mul_tables_compare::@6 -print_char dominated by main print_word print_char main::@1 main::@2 @10 @begin mul_tables_compare print_byte mul_tables_compare::@1 mul_tables_compare::@3 mul_tables_compare::@7 mul_tables_compare::@6 -print_char::@return dominated by main print_word print_char main::@1 main::@2 @10 print_char::@return @begin mul_tables_compare print_byte mul_tables_compare::@1 mul_tables_compare::@3 mul_tables_compare::@7 mul_tables_compare::@6 -print_str dominated by main main::@1 main::@2 @10 @begin mul_tables_compare mul_tables_compare::@1 print_str mul_tables_compare::@3 mul_tables_compare::@6 -print_str::@1 dominated by main print_str::@1 main::@1 main::@2 @10 @begin mul_tables_compare mul_tables_compare::@1 print_str mul_tables_compare::@3 mul_tables_compare::@6 -print_str::@return dominated by print_str::@return main print_str::@1 main::@1 main::@2 @10 @begin mul_tables_compare mul_tables_compare::@1 print_str mul_tables_compare::@3 mul_tables_compare::@6 -print_str::@2 dominated by main print_str::@1 print_str::@2 main::@1 main::@2 @10 @begin mul_tables_compare mul_tables_compare::@1 print_str mul_tables_compare::@3 mul_tables_compare::@6 -print_cls dominated by main main::@1 main::@2 @10 @begin mul_tables_compare print_cls mul_tables_compare::@1 mul_tables_compare::@3 -print_cls::@1 dominated by main main::@1 main::@2 @10 @begin mul_tables_compare print_cls::@1 print_cls mul_tables_compare::@1 mul_tables_compare::@3 -print_cls::@return dominated by main main::@1 print_cls::@return main::@2 @10 @begin mul_tables_compare print_cls::@1 print_cls mul_tables_compare::@1 mul_tables_compare::@3 -init_mul_tables_asm dominated by main init_mul_tables_asm main::@1 @10 @begin -init_mul_tables_asm::@return dominated by main init_mul_tables_asm::@return init_mul_tables_asm main::@1 @10 @begin -init_mul_tables dominated by main init_mul_tables @10 @begin -init_mul_tables::@1 dominated by main init_mul_tables @10 @begin init_mul_tables::@1 -init_mul_tables::@5 dominated by main init_mul_tables @10 @begin init_mul_tables::@5 init_mul_tables::@1 -init_mul_tables::@2 dominated by main init_mul_tables @10 @begin init_mul_tables::@2 init_mul_tables::@1 -init_mul_tables::@3 dominated by main init_mul_tables @10 @begin init_mul_tables::@2 init_mul_tables::@1 init_mul_tables::@3 -init_mul_tables::@4 dominated by main init_mul_tables @10 @begin init_mul_tables::@2 init_mul_tables::@1 init_mul_tables::@4 init_mul_tables::@3 -init_mul_tables::@8 dominated by main init_mul_tables @10 @begin init_mul_tables::@8 init_mul_tables::@2 init_mul_tables::@1 init_mul_tables::@4 init_mul_tables::@3 -init_mul_tables::@return dominated by main init_mul_tables init_mul_tables::@return @10 @begin init_mul_tables::@8 init_mul_tables::@2 init_mul_tables::@1 init_mul_tables::@4 init_mul_tables::@3 -init_mul_tables::@12 dominated by main init_mul_tables @10 @begin init_mul_tables::@2 init_mul_tables::@1 init_mul_tables::@3 init_mul_tables::@12 +@13 dominated by @begin @13 +@end dominated by @end @begin @13 +main dominated by main @begin @13 +main::@1 dominated by main main::@1 @begin @13 +main::@2 dominated by main main::@1 main::@2 @begin @13 +main::@3 dominated by main main::@1 main::@2 main::@3 @begin @13 +main::@4 dominated by main main::@1 main::@2 main::@3 main::@4 @begin @13 +main::@return dominated by main main::@1 main::@2 main::@3 main::@4 @begin main::@return @13 +mul_results_compare dominated by main main::@1 main::@2 main::@3 main::@4 @begin mul_results_compare @13 +mul_results_compare::@1 dominated by main main::@1 main::@2 main::@3 main::@4 @begin mul_results_compare::@1 mul_results_compare @13 +mul_results_compare::@2 dominated by main main::@1 main::@2 main::@3 main::@4 mul_results_compare::@2 @begin mul_results_compare::@1 mul_results_compare @13 +mul_results_compare::@8 dominated by main main::@1 main::@2 main::@3 main::@4 mul_results_compare::@2 @begin mul_results_compare::@1 mul_results_compare::@8 mul_results_compare @13 +mul_results_compare::@9 dominated by main main::@1 main::@2 main::@3 main::@4 mul_results_compare::@2 @begin mul_results_compare::@1 mul_results_compare::@8 mul_results_compare::@9 mul_results_compare @13 +mul_results_compare::@4 dominated by main main::@1 main::@2 main::@3 main::@4 mul_results_compare::@2 @begin mul_results_compare::@1 mul_results_compare::@4 mul_results_compare::@8 mul_results_compare::@9 mul_results_compare @13 +mul_results_compare::@10 dominated by main main::@1 main::@2 main::@3 main::@4 mul_results_compare::@10 mul_results_compare::@2 @begin mul_results_compare::@1 mul_results_compare::@4 mul_results_compare::@8 mul_results_compare::@9 mul_results_compare @13 +mul_results_compare::@11 dominated by main main::@1 main::@2 main::@3 main::@4 mul_results_compare::@11 mul_results_compare::@10 mul_results_compare::@2 @begin mul_results_compare::@1 mul_results_compare::@4 mul_results_compare::@8 mul_results_compare::@9 mul_results_compare @13 +mul_results_compare::@12 dominated by main main::@1 main::@2 main::@3 main::@4 mul_results_compare::@12 mul_results_compare::@11 mul_results_compare::@10 mul_results_compare::@2 @begin mul_results_compare::@1 mul_results_compare::@4 mul_results_compare::@8 mul_results_compare::@9 mul_results_compare @13 +mul_results_compare::@return dominated by main main::@1 main::@2 main::@3 main::@4 mul_results_compare::@2 @begin mul_results_compare::@1 mul_results_compare::@8 mul_results_compare::@9 mul_results_compare @13 mul_results_compare::@return +mul_results_compare::@3 dominated by main main::@1 main::@2 main::@3 main::@4 mul_results_compare::@2 @begin mul_results_compare::@1 mul_results_compare::@3 mul_results_compare::@8 mul_results_compare::@9 mul_results_compare @13 +mul_results_compare::@6 dominated by main main::@1 main::@2 main::@3 main::@4 mul_results_compare::@2 @begin mul_results_compare::@1 mul_results_compare::@3 mul_results_compare::@6 mul_results_compare::@8 mul_results_compare::@9 mul_results_compare @13 +mul_results_compare::@7 dominated by main main::@1 main::@2 main::@3 main::@4 mul_results_compare::@2 @begin mul_results_compare::@1 mul_results_compare::@3 mul_results_compare::@6 mul_results_compare::@8 mul_results_compare::@7 mul_results_compare::@9 mul_results_compare @13 +mul_results_compare::@14 dominated by main main::@1 main::@2 mul_results_compare::@14 main::@3 main::@4 mul_results_compare::@2 @begin mul_results_compare::@1 mul_results_compare::@3 mul_results_compare::@6 mul_results_compare::@8 mul_results_compare::@7 mul_results_compare::@9 mul_results_compare @13 +print_ln dominated by main main::@1 main::@2 main::@3 @begin print_ln @13 +print_ln::@1 dominated by print_ln::@1 main main::@1 main::@2 main::@3 @begin print_ln @13 +print_ln::@return dominated by print_ln::@1 main print_ln::@return main::@1 main::@2 main::@3 @begin print_ln @13 +print_str dominated by main main::@1 main::@2 main::@3 @begin @13 print_str +print_str::@1 dominated by main main::@1 main::@2 main::@3 @begin print_str::@1 @13 print_str +print_str::@return dominated by main main::@1 main::@2 main::@3 @begin print_str::@return print_str::@1 @13 print_str +print_str::@2 dominated by main main::@1 main::@2 main::@3 @begin print_str::@1 print_str::@2 @13 print_str +print_word dominated by main print_word main::@1 main::@2 main::@3 @begin @13 +print_word::@1 dominated by main print_word main::@1 main::@2 main::@3 @begin print_word::@1 @13 +print_word::@return dominated by main print_word main::@1 main::@2 main::@3 @begin print_word::@return print_word::@1 @13 +print_byte dominated by main print_word main::@1 main::@2 main::@3 @begin @13 print_byte +print_byte::@1 dominated by main print_word main::@1 main::@2 main::@3 @begin print_byte::@1 @13 print_byte +print_byte::@return dominated by main print_word main::@1 main::@2 main::@3 @begin print_byte::@return print_byte::@1 @13 print_byte +print_char dominated by main print_word print_char main::@1 main::@2 main::@3 @begin @13 print_byte +print_char::@return dominated by main print_word print_char main::@1 main::@2 main::@3 print_char::@return @begin @13 print_byte +asm_multiply dominated by main main::@1 main::@2 main::@3 main::@4 mul_results_compare::@2 @begin mul_results_compare::@1 mul_results_compare::@8 asm_multiply mul_results_compare @13 +asm_multiply::@return dominated by main main::@1 main::@2 main::@3 main::@4 mul_results_compare::@2 @begin mul_results_compare::@1 asm_multiply::@return mul_results_compare::@8 asm_multiply mul_results_compare @13 +slow_multiply dominated by main main::@1 main::@2 main::@3 main::@4 mul_results_compare::@2 @begin mul_results_compare::@1 slow_multiply mul_results_compare @13 +slow_multiply::@2 dominated by main main::@1 main::@2 main::@3 main::@4 mul_results_compare::@2 @begin mul_results_compare::@1 slow_multiply::@2 slow_multiply mul_results_compare @13 +slow_multiply::@1 dominated by main main::@1 main::@2 main::@3 main::@4 mul_results_compare::@2 @begin mul_results_compare::@1 slow_multiply::@1 slow_multiply mul_results_compare @13 +slow_multiply::@return dominated by main main::@1 main::@2 main::@3 main::@4 mul_results_compare::@2 @begin mul_results_compare::@1 slow_multiply::@1 slow_multiply mul_results_compare @13 slow_multiply::@return +mul_tables_compare dominated by main main::@1 main::@2 main::@3 @begin mul_tables_compare @13 +mul_tables_compare::@1 dominated by main main::@1 main::@2 main::@3 @begin mul_tables_compare @13 mul_tables_compare::@1 +mul_tables_compare::@3 dominated by main main::@1 main::@2 main::@3 @begin mul_tables_compare @13 mul_tables_compare::@1 mul_tables_compare::@3 +mul_tables_compare::@6 dominated by main main::@1 main::@2 main::@3 @begin mul_tables_compare @13 mul_tables_compare::@1 mul_tables_compare::@3 mul_tables_compare::@6 +mul_tables_compare::@7 dominated by main main::@1 main::@2 main::@3 @begin mul_tables_compare @13 mul_tables_compare::@1 mul_tables_compare::@3 mul_tables_compare::@7 mul_tables_compare::@6 +mul_tables_compare::@8 dominated by main main::@1 main::@2 main::@3 @begin mul_tables_compare @13 mul_tables_compare::@1 mul_tables_compare::@3 mul_tables_compare::@7 mul_tables_compare::@6 mul_tables_compare::@8 +mul_tables_compare::@return dominated by main main::@1 main::@2 main::@3 @begin mul_tables_compare @13 mul_tables_compare::@return mul_tables_compare::@1 +mul_tables_compare::@2 dominated by main main::@1 main::@2 main::@3 @begin mul_tables_compare @13 mul_tables_compare::@1 mul_tables_compare::@2 +mul_tables_compare::@5 dominated by main main::@1 main::@2 main::@3 @begin mul_tables_compare @13 mul_tables_compare::@1 mul_tables_compare::@2 mul_tables_compare::@5 +mul_tables_compare::@10 dominated by main main::@1 main::@2 main::@3 @begin mul_tables_compare mul_tables_compare::@10 @13 mul_tables_compare::@1 mul_tables_compare::@2 mul_tables_compare::@5 +init_mul_tables_asm dominated by main main::@1 main::@2 @begin init_mul_tables_asm @13 +init_mul_tables_asm::@return dominated by main init_mul_tables_asm::@return main::@1 main::@2 @begin init_mul_tables_asm @13 +init_mul_tables dominated by main init_mul_tables main::@1 @begin @13 +init_mul_tables::@1 dominated by main init_mul_tables main::@1 @begin init_mul_tables::@1 @13 +init_mul_tables::@5 dominated by main init_mul_tables main::@1 @begin init_mul_tables::@5 init_mul_tables::@1 @13 +init_mul_tables::@2 dominated by main init_mul_tables main::@1 @begin init_mul_tables::@2 init_mul_tables::@1 @13 +init_mul_tables::@3 dominated by main init_mul_tables main::@1 @begin init_mul_tables::@2 init_mul_tables::@1 init_mul_tables::@3 @13 +init_mul_tables::@4 dominated by main init_mul_tables main::@1 @begin init_mul_tables::@2 init_mul_tables::@1 init_mul_tables::@4 init_mul_tables::@3 @13 +init_mul_tables::@8 dominated by main init_mul_tables main::@1 @begin init_mul_tables::@8 init_mul_tables::@2 init_mul_tables::@1 init_mul_tables::@4 init_mul_tables::@3 @13 +init_mul_tables::@return dominated by main init_mul_tables main::@1 init_mul_tables::@return @begin init_mul_tables::@8 init_mul_tables::@2 init_mul_tables::@1 init_mul_tables::@4 init_mul_tables::@3 @13 +init_mul_tables::@12 dominated by main init_mul_tables main::@1 @begin init_mul_tables::@2 init_mul_tables::@1 init_mul_tables::@3 init_mul_tables::@12 @13 +print_cls dominated by main @begin @13 print_cls +print_cls::@1 dominated by main @begin @13 print_cls::@1 print_cls +print_cls::@return dominated by main @begin print_cls::@return @13 print_cls::@1 print_cls NATURAL LOOPS -Found back edge: Loop head: mul_tables_compare::@1 tails: mul_tables_compare::@2 blocks: null +Found back edge: Loop head: mul_results_compare::@2 tails: mul_results_compare::@3 blocks: null +Found back edge: Loop head: mul_results_compare::@1 tails: mul_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: print_cls::@1 tails: print_cls::@1 blocks: null +Found back edge: Loop head: slow_multiply::@2 tails: slow_multiply::@2 blocks: null +Found back edge: Loop head: mul_tables_compare::@1 tails: mul_tables_compare::@2 blocks: null Found back edge: Loop head: init_mul_tables::@1 tails: init_mul_tables::@2 blocks: null Found back edge: Loop head: init_mul_tables::@3 tails: init_mul_tables::@4 blocks: null -Populated: Loop head: mul_tables_compare::@1 tails: mul_tables_compare::@2 blocks: mul_tables_compare::@2 mul_tables_compare::@1 +Found back edge: Loop head: print_cls::@1 tails: print_cls::@1 blocks: null +Populated: Loop head: mul_results_compare::@2 tails: mul_results_compare::@3 blocks: mul_results_compare::@3 mul_results_compare::@9 mul_results_compare::@8 mul_results_compare::@2 +Populated: Loop head: mul_results_compare::@1 tails: mul_results_compare::@6 blocks: mul_results_compare::@6 mul_results_compare::@3 mul_results_compare::@9 mul_results_compare::@8 mul_results_compare::@2 mul_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: print_cls::@1 tails: print_cls::@1 blocks: print_cls::@1 +Populated: Loop head: slow_multiply::@2 tails: slow_multiply::@2 blocks: slow_multiply::@2 +Populated: Loop head: mul_tables_compare::@1 tails: mul_tables_compare::@2 blocks: mul_tables_compare::@2 mul_tables_compare::@1 Populated: Loop head: init_mul_tables::@1 tails: init_mul_tables::@2 blocks: init_mul_tables::@2 init_mul_tables::@1 init_mul_tables::@5 Populated: Loop head: init_mul_tables::@3 tails: init_mul_tables::@4 blocks: init_mul_tables::@4 init_mul_tables::@12 init_mul_tables::@3 -Loop head: mul_tables_compare::@1 tails: mul_tables_compare::@2 blocks: mul_tables_compare::@2 mul_tables_compare::@1 +Populated: Loop head: print_cls::@1 tails: print_cls::@1 blocks: print_cls::@1 +Loop head: mul_results_compare::@2 tails: mul_results_compare::@3 blocks: mul_results_compare::@3 mul_results_compare::@9 mul_results_compare::@8 mul_results_compare::@2 +Loop head: mul_results_compare::@1 tails: mul_results_compare::@6 blocks: mul_results_compare::@6 mul_results_compare::@3 mul_results_compare::@9 mul_results_compare::@8 mul_results_compare::@2 mul_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: print_cls::@1 tails: print_cls::@1 blocks: print_cls::@1 +Loop head: slow_multiply::@2 tails: slow_multiply::@2 blocks: slow_multiply::@2 +Loop head: mul_tables_compare::@1 tails: mul_tables_compare::@2 blocks: mul_tables_compare::@2 mul_tables_compare::@1 Loop head: init_mul_tables::@1 tails: init_mul_tables::@2 blocks: init_mul_tables::@2 init_mul_tables::@1 init_mul_tables::@5 Loop head: init_mul_tables::@3 tails: init_mul_tables::@4 blocks: init_mul_tables::@4 init_mul_tables::@12 init_mul_tables::@3 +Loop head: print_cls::@1 tails: print_cls::@1 blocks: print_cls::@1 NATURAL LOOPS WITH DEPTH 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_mul_tables] Loop head: init_mul_tables::@1 tails: init_mul_tables::@2 blocks: init_mul_tables::@2 init_mul_tables::@1 init_mul_tables::@5 Loop head: init_mul_tables::@3 tails: init_mul_tables::@4 blocks: init_mul_tables::@4 init_mul_tables::@12 init_mul_tables::@3 Found 0 loops in scope [init_mul_tables_asm] Found 1 loops in scope [mul_tables_compare] Loop head: mul_tables_compare::@1 tails: mul_tables_compare::@2 blocks: mul_tables_compare::@2 mul_tables_compare::@1 -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 [mul_results_compare] + Loop head: mul_results_compare::@2 tails: mul_results_compare::@3 blocks: mul_results_compare::@3 mul_results_compare::@9 mul_results_compare::@8 mul_results_compare::@2 + Loop head: mul_results_compare::@1 tails: mul_results_compare::@6 blocks: mul_results_compare::@6 mul_results_compare::@3 mul_results_compare::@9 mul_results_compare::@8 mul_results_compare::@2 mul_results_compare::@1 Found 1 loops in scope [print_str] Loop head: print_str::@1 tails: print_str::@2 blocks: print_str::@2 print_str::@1 Found 0 loops in scope [print_word] +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 [asm_multiply] Found 0 loops in scope [print_byte] Found 0 loops in scope [print_char] -Loop head: mul_tables_compare::@1 tails: mul_tables_compare::@2 blocks: mul_tables_compare::@2 mul_tables_compare::@1 depth: 1 +Loop head: mul_results_compare::@2 tails: mul_results_compare::@3 blocks: mul_results_compare::@3 mul_results_compare::@9 mul_results_compare::@8 mul_results_compare::@2 depth: 2 +Loop head: mul_results_compare::@1 tails: mul_results_compare::@6 blocks: mul_results_compare::@6 mul_results_compare::@3 mul_results_compare::@9 mul_results_compare::@8 mul_results_compare::@2 mul_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: print_cls::@1 tails: print_cls::@1 blocks: print_cls::@1 depth: 1 +Loop head: slow_multiply::@2 tails: slow_multiply::@2 blocks: slow_multiply::@2 depth: 3 +Loop head: mul_tables_compare::@1 tails: mul_tables_compare::@2 blocks: mul_tables_compare::@2 mul_tables_compare::@1 depth: 1 Loop head: init_mul_tables::@1 tails: init_mul_tables::@2 blocks: init_mul_tables::@2 init_mul_tables::@1 init_mul_tables::@5 depth: 1 Loop head: init_mul_tables::@3 tails: init_mul_tables::@4 blocks: init_mul_tables::@4 init_mul_tables::@12 init_mul_tables::@3 depth: 1 +Loop head: print_cls::@1 tails: print_cls::@1 blocks: print_cls::@1 depth: 1 VARIABLE REGISTER WEIGHTS @@ -2072,14 +3369,27 @@ VARIABLE REGISTER WEIGHTS (byte[512]) asm_mul_sqr1_lo (byte[512]) asm_mul_sqr2_hi (byte[512]) asm_mul_sqr2_lo +(word()) asm_multiply((byte) asm_multiply::a , (byte) asm_multiply::b) +(byte) asm_multiply::a +(byte) asm_multiply::a#0 51.5 +(byte) asm_multiply::b +(byte) asm_multiply::b#0 51.5 +(byte*) asm_multiply::memA +(byte*) asm_multiply::memB +(word) asm_multiply::return +(word) asm_multiply::return#0 34.33333333333333 +(word) asm_multiply::return#2 202.0 (byte*) char_cursor (byte*) char_cursor#1 11.0 -(byte*) char_cursor#10 0.7142857142857142 -(byte*) char_cursor#17 20.0 -(byte*) char_cursor#19 3.7 -(byte*) char_cursor#27 4.0 -(byte*) char_cursor#39 2.0 -(byte*) char_cursor#44 4.0 +(byte*~) char_cursor#100 4.0 +(byte*) char_cursor#11 0.823529411764706 +(byte*) char_cursor#2 2.1818181818181817 +(byte*) char_cursor#20 0.3333333333333333 +(byte*) char_cursor#27 40.0 +(byte*) char_cursor#41 4.0 +(byte*) char_cursor#64 2.0 +(byte*) char_cursor#71 10.0 +(byte*~) char_cursor#89 4.0 (void()) init_mul_tables() (byte~) init_mul_tables::$2 22.0 (byte~) init_mul_tables::$5 22.0 @@ -2117,7 +3427,23 @@ VARIABLE REGISTER WEIGHTS (void()) init_mul_tables_asm() (byte*) init_mul_tables_asm::mem (byte*) line_cursor +(byte*) line_cursor#1 5.857142857142857 +(byte*) line_cursor#11 24.0 +(byte*) line_cursor#17 0.18181818181818182 +(byte*) line_cursor#19 40.0 +(byte*) line_cursor#22 4.0 (void()) main() +(void()) mul_results_compare() +(byte) mul_results_compare::a +(byte) mul_results_compare::a#1 16.5 +(byte) mul_results_compare::a#5 14.933333333333332 +(byte) mul_results_compare::b +(byte) mul_results_compare::b#1 151.5 +(byte) mul_results_compare::b#2 33.666666666666664 +(word) mul_results_compare::ma +(word) mul_results_compare::ma#0 25.5 +(word) mul_results_compare::ms +(word) mul_results_compare::ms#0 22.666666666666664 (byte[512]) mul_sqr1_hi (byte[512]) mul_sqr1_lo (byte[512]) mul_sqr2_hi @@ -2125,10 +3451,10 @@ VARIABLE REGISTER WEIGHTS (void()) mul_tables_compare() (byte*) mul_tables_compare::asm_sqr (byte*) mul_tables_compare::asm_sqr#1 7.333333333333333 -(byte*) mul_tables_compare::asm_sqr#2 5.833333333333333 +(byte*) mul_tables_compare::asm_sqr#2 8.75 (byte*) mul_tables_compare::kc_sqr (byte*) mul_tables_compare::kc_sqr#1 16.5 -(byte*) mul_tables_compare::kc_sqr#2 3.1818181818181817 +(byte*) mul_tables_compare::kc_sqr#2 3.8888888888888893 (void()) print_byte((byte) print_byte::b) (byte~) print_byte::$0 4.0 (byte~) print_byte::$2 4.0 @@ -2146,26 +3472,47 @@ VARIABLE REGISTER WEIGHTS (byte*) print_cls::sc (byte*) print_cls::sc#1 16.5 (byte*) print_cls::sc#2 16.5 +(void()) print_ln() (void()) print_str((byte*) print_str::str) (byte*) print_str::str (byte*) print_str::str#0 22.0 -(byte*) print_str::str#3 11.5 -(byte*) print_str::str#5 2.0 +(byte*) print_str::str#7 11.5 +(byte*) print_str::str#9 2.0 (void()) print_word((word) print_word::w) (word) print_word::w (word) print_word::w#0 4.0 (word) print_word::w#1 4.0 -(word) print_word::w#2 2.6666666666666665 +(word) print_word::w#2 4.0 +(word) print_word::w#3 4.0 +(word) print_word::w#4 3.9999999999999996 +(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 Initial phi equivalence classes -[ mul_tables_compare::kc_sqr#2 mul_tables_compare::kc_sqr#1 ] -[ mul_tables_compare::asm_sqr#2 mul_tables_compare::asm_sqr#1 ] -[ print_word::w#2 print_word::w#0 print_word::w#1 ] +[ mul_results_compare::a#5 mul_results_compare::a#1 ] +[ mul_results_compare::b#2 mul_results_compare::b#1 ] +[ line_cursor#11 line_cursor#22 line_cursor#19 line_cursor#17 line_cursor#1 ] +[ print_str::str#7 print_str::str#9 print_str::str#0 ] +[ print_word::w#4 print_word::w#2 print_word::w#3 print_word::w#0 print_word::w#1 ] [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] -[ char_cursor#44 char_cursor#27 char_cursor#39 char_cursor#19 char_cursor#17 char_cursor#10 char_cursor#1 ] -[ print_str::str#3 print_str::str#5 print_str::str#0 ] -[ print_cls::sc#2 print_cls::sc#1 ] +[ char_cursor#41 char_cursor#64 char_cursor#2 char_cursor#71 char_cursor#27 char_cursor#11 char_cursor#89 char_cursor#20 char_cursor#1 char_cursor#100 ] +[ slow_multiply::i#2 slow_multiply::i#1 ] +[ slow_multiply::return#0 slow_multiply::m#3 slow_multiply::m#1 ] +[ mul_tables_compare::kc_sqr#2 mul_tables_compare::kc_sqr#1 ] +[ mul_tables_compare::asm_sqr#2 mul_tables_compare::asm_sqr#1 ] [ init_mul_tables::c#2 init_mul_tables::c#1 ] [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_lo#1 ] [ init_mul_tables::sqr1_hi#2 init_mul_tables::sqr1_hi#1 ] @@ -2175,20 +3522,34 @@ Initial phi equivalence classes [ init_mul_tables::sqr2_lo#2 init_mul_tables::sqr2_lo#1 ] [ init_mul_tables::sqr2_hi#2 init_mul_tables::sqr2_hi#1 ] [ init_mul_tables::dir#2 init_mul_tables::dir#3 ] +[ print_cls::sc#2 print_cls::sc#1 ] +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 mul_results_compare::ms#0 to zero page equivalence class [ mul_results_compare::ms#0 ] +Added variable asm_multiply::a#0 to zero page equivalence class [ asm_multiply::a#0 ] +Added variable asm_multiply::b#0 to zero page equivalence class [ asm_multiply::b#0 ] +Added variable asm_multiply::return#2 to zero page equivalence class [ asm_multiply::return#2 ] +Added variable mul_results_compare::ma#0 to zero page equivalence class [ mul_results_compare::ma#0 ] Added variable print_byte::$0 to zero page equivalence class [ print_byte::$0 ] Added variable print_byte::$2 to zero page equivalence class [ print_byte::$2 ] +Added variable asm_multiply::return#0 to zero page equivalence class [ asm_multiply::return#0 ] Added variable init_mul_tables::$2 to zero page equivalence class [ init_mul_tables::$2 ] Added variable init_mul_tables::$5 to zero page equivalence class [ init_mul_tables::$5 ] Added variable init_mul_tables::$6 to zero page equivalence class [ init_mul_tables::$6 ] Complete equivalence classes -[ mul_tables_compare::kc_sqr#2 mul_tables_compare::kc_sqr#1 ] -[ mul_tables_compare::asm_sqr#2 mul_tables_compare::asm_sqr#1 ] -[ print_word::w#2 print_word::w#0 print_word::w#1 ] +[ mul_results_compare::a#5 mul_results_compare::a#1 ] +[ mul_results_compare::b#2 mul_results_compare::b#1 ] +[ line_cursor#11 line_cursor#22 line_cursor#19 line_cursor#17 line_cursor#1 ] +[ print_str::str#7 print_str::str#9 print_str::str#0 ] +[ print_word::w#4 print_word::w#2 print_word::w#3 print_word::w#0 print_word::w#1 ] [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] -[ char_cursor#44 char_cursor#27 char_cursor#39 char_cursor#19 char_cursor#17 char_cursor#10 char_cursor#1 ] -[ print_str::str#3 print_str::str#5 print_str::str#0 ] -[ print_cls::sc#2 print_cls::sc#1 ] +[ char_cursor#41 char_cursor#64 char_cursor#2 char_cursor#71 char_cursor#27 char_cursor#11 char_cursor#89 char_cursor#20 char_cursor#1 char_cursor#100 ] +[ slow_multiply::i#2 slow_multiply::i#1 ] +[ slow_multiply::return#0 slow_multiply::m#3 slow_multiply::m#1 ] +[ mul_tables_compare::kc_sqr#2 mul_tables_compare::kc_sqr#1 ] +[ mul_tables_compare::asm_sqr#2 mul_tables_compare::asm_sqr#1 ] [ init_mul_tables::c#2 init_mul_tables::c#1 ] [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_lo#1 ] [ init_mul_tables::sqr1_hi#2 init_mul_tables::sqr1_hi#1 ] @@ -2198,33 +3559,57 @@ Complete equivalence classes [ init_mul_tables::sqr2_lo#2 init_mul_tables::sqr2_lo#1 ] [ init_mul_tables::sqr2_hi#2 init_mul_tables::sqr2_hi#1 ] [ init_mul_tables::dir#2 init_mul_tables::dir#3 ] +[ print_cls::sc#2 print_cls::sc#1 ] +[ slow_multiply::a#0 ] +[ slow_multiply::b#0 ] +[ slow_multiply::return#2 ] +[ mul_results_compare::ms#0 ] +[ asm_multiply::a#0 ] +[ asm_multiply::b#0 ] +[ asm_multiply::return#2 ] +[ mul_results_compare::ma#0 ] [ print_byte::$0 ] [ print_byte::$2 ] +[ asm_multiply::return#0 ] [ init_mul_tables::$2 ] [ init_mul_tables::$5 ] [ init_mul_tables::$6 ] -Allocated zp ZP_WORD:2 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::kc_sqr#1 ] -Allocated zp ZP_WORD:4 [ mul_tables_compare::asm_sqr#2 mul_tables_compare::asm_sqr#1 ] -Allocated zp ZP_WORD:6 [ print_word::w#2 print_word::w#0 print_word::w#1 ] -Allocated zp ZP_BYTE:8 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -Allocated zp ZP_BYTE:9 [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] -Allocated zp ZP_WORD:10 [ char_cursor#44 char_cursor#27 char_cursor#39 char_cursor#19 char_cursor#17 char_cursor#10 char_cursor#1 ] -Allocated zp ZP_WORD:12 [ print_str::str#3 print_str::str#5 print_str::str#0 ] -Allocated zp ZP_WORD:14 [ print_cls::sc#2 print_cls::sc#1 ] -Allocated zp ZP_BYTE:16 [ init_mul_tables::c#2 init_mul_tables::c#1 ] -Allocated zp ZP_WORD:17 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_lo#1 ] -Allocated zp ZP_WORD:19 [ init_mul_tables::sqr1_hi#2 init_mul_tables::sqr1_hi#1 ] -Allocated zp ZP_BYTE:21 [ init_mul_tables::x_2#3 init_mul_tables::x_2#2 init_mul_tables::x_2#1 ] -Allocated zp ZP_WORD:22 [ init_mul_tables::sqr#3 init_mul_tables::sqr#4 init_mul_tables::sqr#1 init_mul_tables::sqr#2 ] -Allocated zp ZP_BYTE:24 [ init_mul_tables::x_255#2 init_mul_tables::x_255#1 ] -Allocated zp ZP_WORD:25 [ init_mul_tables::sqr2_lo#2 init_mul_tables::sqr2_lo#1 ] -Allocated zp ZP_WORD:27 [ init_mul_tables::sqr2_hi#2 init_mul_tables::sqr2_hi#1 ] -Allocated zp ZP_BYTE:29 [ init_mul_tables::dir#2 init_mul_tables::dir#3 ] -Allocated zp ZP_BYTE:30 [ print_byte::$0 ] -Allocated zp ZP_BYTE:31 [ print_byte::$2 ] -Allocated zp ZP_BYTE:32 [ init_mul_tables::$2 ] -Allocated zp ZP_BYTE:33 [ init_mul_tables::$5 ] -Allocated zp ZP_BYTE:34 [ init_mul_tables::$6 ] +Allocated zp ZP_BYTE:2 [ mul_results_compare::a#5 mul_results_compare::a#1 ] +Allocated zp ZP_BYTE:3 [ mul_results_compare::b#2 mul_results_compare::b#1 ] +Allocated zp ZP_WORD:4 [ line_cursor#11 line_cursor#22 line_cursor#19 line_cursor#17 line_cursor#1 ] +Allocated zp ZP_WORD:6 [ print_str::str#7 print_str::str#9 print_str::str#0 ] +Allocated zp ZP_WORD:8 [ print_word::w#4 print_word::w#2 print_word::w#3 print_word::w#0 print_word::w#1 ] +Allocated zp ZP_BYTE:10 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] +Allocated zp ZP_BYTE:11 [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] +Allocated zp ZP_WORD:12 [ char_cursor#41 char_cursor#64 char_cursor#2 char_cursor#71 char_cursor#27 char_cursor#11 char_cursor#89 char_cursor#20 char_cursor#1 char_cursor#100 ] +Allocated zp ZP_BYTE:14 [ slow_multiply::i#2 slow_multiply::i#1 ] +Allocated zp ZP_WORD:15 [ slow_multiply::return#0 slow_multiply::m#3 slow_multiply::m#1 ] +Allocated zp ZP_WORD:17 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::kc_sqr#1 ] +Allocated zp ZP_WORD:19 [ mul_tables_compare::asm_sqr#2 mul_tables_compare::asm_sqr#1 ] +Allocated zp ZP_BYTE:21 [ init_mul_tables::c#2 init_mul_tables::c#1 ] +Allocated zp ZP_WORD:22 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_lo#1 ] +Allocated zp ZP_WORD:24 [ init_mul_tables::sqr1_hi#2 init_mul_tables::sqr1_hi#1 ] +Allocated zp ZP_BYTE:26 [ init_mul_tables::x_2#3 init_mul_tables::x_2#2 init_mul_tables::x_2#1 ] +Allocated zp ZP_WORD:27 [ init_mul_tables::sqr#3 init_mul_tables::sqr#4 init_mul_tables::sqr#1 init_mul_tables::sqr#2 ] +Allocated zp ZP_BYTE:29 [ init_mul_tables::x_255#2 init_mul_tables::x_255#1 ] +Allocated zp ZP_WORD:30 [ init_mul_tables::sqr2_lo#2 init_mul_tables::sqr2_lo#1 ] +Allocated zp ZP_WORD:32 [ init_mul_tables::sqr2_hi#2 init_mul_tables::sqr2_hi#1 ] +Allocated zp ZP_BYTE:34 [ init_mul_tables::dir#2 init_mul_tables::dir#3 ] +Allocated zp ZP_WORD:35 [ print_cls::sc#2 print_cls::sc#1 ] +Allocated zp ZP_BYTE:37 [ slow_multiply::a#0 ] +Allocated zp ZP_BYTE:38 [ slow_multiply::b#0 ] +Allocated zp ZP_WORD:39 [ slow_multiply::return#2 ] +Allocated zp ZP_WORD:41 [ mul_results_compare::ms#0 ] +Allocated zp ZP_BYTE:43 [ asm_multiply::a#0 ] +Allocated zp ZP_BYTE:44 [ asm_multiply::b#0 ] +Allocated zp ZP_WORD:45 [ asm_multiply::return#2 ] +Allocated zp ZP_WORD:47 [ mul_results_compare::ma#0 ] +Allocated zp ZP_BYTE:49 [ print_byte::$0 ] +Allocated zp ZP_BYTE:50 [ print_byte::$2 ] +Allocated zp ZP_WORD:51 [ asm_multiply::return#0 ] +Allocated zp ZP_BYTE:53 [ init_mul_tables::$2 ] +Allocated zp ZP_BYTE:54 [ init_mul_tables::$5 ] +Allocated zp ZP_BYTE:55 [ init_mul_tables::$6 ] INITIAL ASM //SEG0 Basic Upstart @@ -2233,173 +3618,659 @@ INITIAL ASM .pc = $80d "Program" //SEG1 Global Constants & labels .const BGCOL = $d021 - .label char_cursor = $a + .label char_cursor = $c + .label line_cursor = 4 //SEG2 @begin bbegin: -//SEG3 [1] phi from @begin to @10 [phi:@begin->@10] -b10_from_bbegin: - jmp b10 -//SEG4 @10 -b10: +//SEG3 [1] phi from @begin to @13 [phi:@begin->@13] +b13_from_bbegin: + jmp b13 +//SEG4 @13 +b13: //SEG5 [2] call main param-assignment [ ] ( ) -//SEG6 [4] phi from @10 to main [phi:@10->main] -main_from_b10: jsr main -//SEG7 [3] phi from @10 to @end [phi:@10->@end] -bend_from_b10: +//SEG6 [3] phi from @13 to @end [phi:@13->@end] +bend_from_b13: jmp bend -//SEG8 @end +//SEG7 @end bend: -//SEG9 main +//SEG8 main main: { - //SEG10 [5] call init_mul_tables param-assignment [ ] ( main:2 [ ] ) - //SEG11 [66] phi from main to init_mul_tables [phi:main->init_mul_tables] - init_mul_tables_from_main: - jsr init_mul_tables + //SEG9 [4] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 5 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2 + lda #5 + sta BGCOL + //SEG10 [5] call print_cls param-assignment [ ] ( main:2 [ ] ) + //SEG11 [146] phi from main to print_cls [phi:main->print_cls] + print_cls_from_main: + jsr print_cls //SEG12 [6] phi from main to main::@1 [phi:main->main::@1] b1_from_main: jmp b1 //SEG13 main::@1 b1: - //SEG14 [7] call init_mul_tables_asm param-assignment [ ] ( main:2 [ ] ) - jsr init_mul_tables_asm - //SEG15 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG14 [7] call init_mul_tables param-assignment [ ] ( main:2 [ ] ) + //SEG15 [117] phi from main::@1 to init_mul_tables [phi:main::@1->init_mul_tables] + init_mul_tables_from_b1: + jsr init_mul_tables + //SEG16 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: jmp b2 - //SEG16 main::@2 + //SEG17 main::@2 b2: - //SEG17 [9] call mul_tables_compare param-assignment [ ] ( main:2 [ ] ) + //SEG18 [9] call init_mul_tables_asm param-assignment [ ] ( main:2 [ ] ) + jsr init_mul_tables_asm + //SEG19 [10] phi from main::@2 to main::@3 [phi:main::@2->main::@3] + b3_from_b2: + jmp b3 + //SEG20 main::@3 + b3: + //SEG21 [11] call mul_tables_compare param-assignment [ line_cursor#17 char_cursor#20 ] ( main:2 [ line_cursor#17 char_cursor#20 ] ) + //SEG22 [90] phi from main::@3 to mul_tables_compare [phi:main::@3->mul_tables_compare] + mul_tables_compare_from_b3: jsr mul_tables_compare + //SEG23 [12] phi from main::@3 to main::@4 [phi:main::@3->main::@4] + b4_from_b3: + jmp b4 + //SEG24 main::@4 + b4: + //SEG25 [13] call mul_results_compare param-assignment [ ] ( main:2 [ ] ) + //SEG26 [15] phi from main::@4 to mul_results_compare [phi:main::@4->mul_results_compare] + mul_results_compare_from_b4: + jsr mul_results_compare jmp breturn - //SEG18 main::@return + //SEG27 main::@return breturn: - //SEG19 [10] return [ ] ( main:2 [ ] ) + //SEG28 [14] return [ ] ( main:2 [ ] ) rts } -//SEG20 mul_tables_compare -mul_tables_compare: { - .label asm_sqr = 4 - .label kc_sqr = 2 - //SEG21 [11] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 5 [ ] ( main:2::mul_tables_compare:9 [ ] ) -- _deref_pbuc1=vbuc2 - lda #5 +//SEG29 mul_results_compare +mul_results_compare: { + .label ms = $29 + .label ma = $2f + .label b = 3 + .label a = 2 + //SEG30 [16] phi from mul_results_compare to mul_results_compare::@1 [phi:mul_results_compare->mul_results_compare::@1] + b1_from_mul_results_compare: + //SEG31 [16] phi (byte) mul_results_compare::a#5 = (byte/signed byte/word/signed word) 0 [phi:mul_results_compare->mul_results_compare::@1#0] -- vbuz1=vbuc1 + lda #0 + sta a + jmp b1 + //SEG32 [16] phi from mul_results_compare::@6 to mul_results_compare::@1 [phi:mul_results_compare::@6->mul_results_compare::@1] + b1_from_b6: + //SEG33 [16] phi (byte) mul_results_compare::a#5 = (byte) mul_results_compare::a#1 [phi:mul_results_compare::@6->mul_results_compare::@1#0] -- register_copy + jmp b1 + //SEG34 mul_results_compare::@1 + b1: + //SEG35 [17] phi from mul_results_compare::@1 to mul_results_compare::@2 [phi:mul_results_compare::@1->mul_results_compare::@2] + b2_from_b1: + //SEG36 [17] phi (byte) mul_results_compare::b#2 = (byte/signed byte/word/signed word) 0 [phi:mul_results_compare::@1->mul_results_compare::@2#0] -- vbuz1=vbuc1 + lda #0 + sta b + jmp b2 + //SEG37 [17] phi from mul_results_compare::@3 to mul_results_compare::@2 [phi:mul_results_compare::@3->mul_results_compare::@2] + b2_from_b3: + //SEG38 [17] phi (byte) mul_results_compare::b#2 = (byte) mul_results_compare::b#1 [phi:mul_results_compare::@3->mul_results_compare::@2#0] -- register_copy + jmp b2 + //SEG39 mul_results_compare::@2 + b2: + //SEG40 [18] (byte) slow_multiply::a#0 ← (byte) mul_results_compare::a#5 [ mul_results_compare::a#5 mul_results_compare::b#2 slow_multiply::a#0 line_cursor#17 char_cursor#20 ] ( main:2::mul_results_compare:13 [ mul_results_compare::a#5 mul_results_compare::b#2 slow_multiply::a#0 line_cursor#17 char_cursor#20 ] ) -- vbuz1=vbuz2 + lda a + sta slow_multiply.a + //SEG41 [19] (byte) slow_multiply::b#0 ← (byte) mul_results_compare::b#2 [ mul_results_compare::a#5 mul_results_compare::b#2 slow_multiply::a#0 slow_multiply::b#0 line_cursor#17 char_cursor#20 ] ( main:2::mul_results_compare:13 [ mul_results_compare::a#5 mul_results_compare::b#2 slow_multiply::a#0 slow_multiply::b#0 line_cursor#17 char_cursor#20 ] ) -- vbuz1=vbuz2 + lda b + sta slow_multiply.b + //SEG42 [20] call slow_multiply param-assignment [ mul_results_compare::a#5 mul_results_compare::b#2 slow_multiply::return#0 line_cursor#17 char_cursor#20 ] ( main:2::mul_results_compare:13 [ mul_results_compare::a#5 mul_results_compare::b#2 slow_multiply::return#0 line_cursor#17 char_cursor#20 ] ) + jsr slow_multiply + //SEG43 [21] (word) slow_multiply::return#2 ← (word) slow_multiply::return#0 [ mul_results_compare::a#5 mul_results_compare::b#2 slow_multiply::return#2 line_cursor#17 char_cursor#20 ] ( main:2::mul_results_compare:13 [ mul_results_compare::a#5 mul_results_compare::b#2 slow_multiply::return#2 line_cursor#17 char_cursor#20 ] ) -- vwuz1=vwuz2 + lda slow_multiply.return + sta slow_multiply.return_2 + lda slow_multiply.return+1 + sta slow_multiply.return_2+1 + jmp b8 + //SEG44 mul_results_compare::@8 + b8: + //SEG45 [22] (word) mul_results_compare::ms#0 ← (word) slow_multiply::return#2 [ mul_results_compare::a#5 mul_results_compare::b#2 mul_results_compare::ms#0 line_cursor#17 char_cursor#20 ] ( main:2::mul_results_compare:13 [ mul_results_compare::a#5 mul_results_compare::b#2 mul_results_compare::ms#0 line_cursor#17 char_cursor#20 ] ) -- vwuz1=vwuz2 + lda slow_multiply.return_2 + sta ms + lda slow_multiply.return_2+1 + sta ms+1 + //SEG46 [23] (byte) asm_multiply::a#0 ← (byte) mul_results_compare::a#5 [ mul_results_compare::a#5 mul_results_compare::b#2 mul_results_compare::ms#0 asm_multiply::a#0 line_cursor#17 char_cursor#20 ] ( main:2::mul_results_compare:13 [ mul_results_compare::a#5 mul_results_compare::b#2 mul_results_compare::ms#0 asm_multiply::a#0 line_cursor#17 char_cursor#20 ] ) -- vbuz1=vbuz2 + lda a + sta asm_multiply.a + //SEG47 [24] (byte) asm_multiply::b#0 ← (byte) mul_results_compare::b#2 [ mul_results_compare::a#5 mul_results_compare::b#2 mul_results_compare::ms#0 asm_multiply::a#0 asm_multiply::b#0 line_cursor#17 char_cursor#20 ] ( main:2::mul_results_compare:13 [ mul_results_compare::a#5 mul_results_compare::b#2 mul_results_compare::ms#0 asm_multiply::a#0 asm_multiply::b#0 line_cursor#17 char_cursor#20 ] ) -- vbuz1=vbuz2 + lda b + sta asm_multiply.b + //SEG48 [25] call asm_multiply param-assignment [ mul_results_compare::a#5 mul_results_compare::b#2 mul_results_compare::ms#0 asm_multiply::return#0 line_cursor#17 char_cursor#20 ] ( main:2::mul_results_compare:13 [ mul_results_compare::a#5 mul_results_compare::b#2 mul_results_compare::ms#0 asm_multiply::return#0 line_cursor#17 char_cursor#20 ] ) + jsr asm_multiply + //SEG49 [26] (word) asm_multiply::return#2 ← (word) asm_multiply::return#0 [ mul_results_compare::a#5 mul_results_compare::b#2 mul_results_compare::ms#0 asm_multiply::return#2 line_cursor#17 char_cursor#20 ] ( main:2::mul_results_compare:13 [ mul_results_compare::a#5 mul_results_compare::b#2 mul_results_compare::ms#0 asm_multiply::return#2 line_cursor#17 char_cursor#20 ] ) -- vwuz1=vwuz2 + lda asm_multiply.return + sta asm_multiply.return_2 + lda asm_multiply.return+1 + sta asm_multiply.return_2+1 + jmp b9 + //SEG50 mul_results_compare::@9 + b9: + //SEG51 [27] (word) mul_results_compare::ma#0 ← (word) asm_multiply::return#2 [ mul_results_compare::a#5 mul_results_compare::b#2 mul_results_compare::ms#0 mul_results_compare::ma#0 line_cursor#17 char_cursor#20 ] ( main:2::mul_results_compare:13 [ mul_results_compare::a#5 mul_results_compare::b#2 mul_results_compare::ms#0 mul_results_compare::ma#0 line_cursor#17 char_cursor#20 ] ) -- vwuz1=vwuz2 + lda asm_multiply.return_2 + sta ma + lda asm_multiply.return_2+1 + sta ma+1 + //SEG52 [28] if((word) mul_results_compare::ms#0==(word) mul_results_compare::ma#0) goto mul_results_compare::@3 [ mul_results_compare::a#5 mul_results_compare::b#2 mul_results_compare::ms#0 mul_results_compare::ma#0 line_cursor#17 char_cursor#20 ] ( main:2::mul_results_compare:13 [ mul_results_compare::a#5 mul_results_compare::b#2 mul_results_compare::ms#0 mul_results_compare::ma#0 line_cursor#17 char_cursor#20 ] ) -- vwuz1_eq_vwuz2_then_la1 + lda ms + cmp ma + bne !+ + lda ms+1 + cmp ma+1 + beq b3 + !: + jmp b4 + //SEG53 mul_results_compare::@4 + b4: + //SEG54 [29] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 2 [ mul_results_compare::ms#0 mul_results_compare::ma#0 line_cursor#17 char_cursor#20 ] ( main:2::mul_results_compare:13 [ mul_results_compare::ms#0 mul_results_compare::ma#0 line_cursor#17 char_cursor#20 ] ) -- _deref_pbuc1=vbuc2 + lda #2 sta BGCOL - //SEG22 [12] phi from mul_tables_compare to mul_tables_compare::@1 [phi:mul_tables_compare->mul_tables_compare::@1] + //SEG55 [30] call print_str param-assignment [ mul_results_compare::ms#0 mul_results_compare::ma#0 line_cursor#17 char_cursor#2 ] ( main:2::mul_results_compare:13 [ mul_results_compare::ms#0 mul_results_compare::ma#0 line_cursor#17 char_cursor#2 ] ) + //SEG56 [53] phi from mul_results_compare::@4 to print_str [phi:mul_results_compare::@4->print_str] + print_str_from_b4: + //SEG57 [53] phi (byte*) char_cursor#71 = (byte*) char_cursor#20 [phi:mul_results_compare::@4->print_str#0] -- register_copy + //SEG58 [53] phi (byte*) print_str::str#9 = (const string) mul_results_compare::str [phi:mul_results_compare::@4->print_str#1] -- pbuz1=pbuc1 + lda #str + sta print_str.str+1 + jsr print_str + jmp b10 + //SEG59 mul_results_compare::@10 + b10: + //SEG60 [31] (word) print_word::w#2 ← (word) mul_results_compare::ms#0 [ mul_results_compare::ma#0 print_word::w#2 line_cursor#17 char_cursor#2 ] ( main:2::mul_results_compare:13 [ mul_results_compare::ma#0 print_word::w#2 line_cursor#17 char_cursor#2 ] ) -- vwuz1=vwuz2 + lda ms + sta print_word.w + lda ms+1 + sta print_word.w+1 + //SEG61 [32] call print_word param-assignment [ mul_results_compare::ma#0 char_cursor#11 line_cursor#17 ] ( main:2::mul_results_compare:13 [ mul_results_compare::ma#0 char_cursor#11 line_cursor#17 ] ) + //SEG62 [60] phi from mul_results_compare::@10 to print_word [phi:mul_results_compare::@10->print_word] + print_word_from_b10: + //SEG63 [60] phi (word) print_word::w#4 = (word) print_word::w#2 [phi:mul_results_compare::@10->print_word#0] -- register_copy + jsr print_word + //SEG64 [33] phi from mul_results_compare::@10 to mul_results_compare::@11 [phi:mul_results_compare::@10->mul_results_compare::@11] + b11_from_b10: + jmp b11 + //SEG65 mul_results_compare::@11 + b11: + //SEG66 [34] call print_str param-assignment [ mul_results_compare::ma#0 line_cursor#17 char_cursor#2 ] ( main:2::mul_results_compare:13 [ mul_results_compare::ma#0 line_cursor#17 char_cursor#2 ] ) + //SEG67 [53] phi from mul_results_compare::@11 to print_str [phi:mul_results_compare::@11->print_str] + print_str_from_b11: + //SEG68 [53] phi (byte*) char_cursor#71 = (byte*) char_cursor#11 [phi:mul_results_compare::@11->print_str#0] -- register_copy + //SEG69 [53] phi (byte*) print_str::str#9 = (const string) mul_results_compare::str1 [phi:mul_results_compare::@11->print_str#1] -- pbuz1=pbuc1 + lda #str1 + sta print_str.str+1 + jsr print_str + jmp b12 + //SEG70 mul_results_compare::@12 + b12: + //SEG71 [35] (word) print_word::w#3 ← (word) mul_results_compare::ma#0 [ print_word::w#3 line_cursor#17 char_cursor#2 ] ( main:2::mul_results_compare:13 [ print_word::w#3 line_cursor#17 char_cursor#2 ] ) -- vwuz1=vwuz2 + lda ma + sta print_word.w + lda ma+1 + sta print_word.w+1 + //SEG72 [36] call print_word param-assignment [ char_cursor#11 line_cursor#17 ] ( main:2::mul_results_compare:13 [ char_cursor#11 line_cursor#17 ] ) + //SEG73 [60] phi from mul_results_compare::@12 to print_word [phi:mul_results_compare::@12->print_word] + print_word_from_b12: + //SEG74 [60] phi (word) print_word::w#4 = (word) print_word::w#3 [phi:mul_results_compare::@12->print_word#0] -- register_copy + jsr print_word + //SEG75 [37] phi from mul_results_compare::@12 mul_results_compare::@14 to mul_results_compare::@return [phi:mul_results_compare::@12/mul_results_compare::@14->mul_results_compare::@return] + breturn_from_b12: + breturn_from_b14: + //SEG76 [37] phi (byte*) line_cursor#19 = (byte*) line_cursor#17 [phi:mul_results_compare::@12/mul_results_compare::@14->mul_results_compare::@return#0] -- register_copy + //SEG77 [37] phi (byte*) char_cursor#27 = (byte*) char_cursor#11 [phi:mul_results_compare::@12/mul_results_compare::@14->mul_results_compare::@return#1] -- register_copy + jmp breturn + //SEG78 mul_results_compare::@return + breturn: + //SEG79 [38] return [ ] ( main:2::mul_results_compare:13 [ ] ) + rts + //SEG80 mul_results_compare::@3 + b3: + //SEG81 [39] (byte) mul_results_compare::b#1 ← ++ (byte) mul_results_compare::b#2 [ mul_results_compare::a#5 mul_results_compare::b#1 line_cursor#17 char_cursor#20 ] ( main:2::mul_results_compare:13 [ mul_results_compare::a#5 mul_results_compare::b#1 line_cursor#17 char_cursor#20 ] ) -- vbuz1=_inc_vbuz1 + inc b + //SEG82 [40] if((byte) mul_results_compare::b#1!=(byte/signed byte/word/signed word) 0) goto mul_results_compare::@2 [ mul_results_compare::a#5 mul_results_compare::b#1 line_cursor#17 char_cursor#20 ] ( main:2::mul_results_compare:13 [ mul_results_compare::a#5 mul_results_compare::b#1 line_cursor#17 char_cursor#20 ] ) -- vbuz1_neq_0_then_la1 + lda b + bne b2_from_b3 + jmp b6 + //SEG83 mul_results_compare::@6 + b6: + //SEG84 [41] (byte) mul_results_compare::a#1 ← ++ (byte) mul_results_compare::a#5 [ mul_results_compare::a#1 line_cursor#17 char_cursor#20 ] ( main:2::mul_results_compare:13 [ mul_results_compare::a#1 line_cursor#17 char_cursor#20 ] ) -- vbuz1=_inc_vbuz1 + inc a + //SEG85 [42] if((byte) mul_results_compare::a#1!=(byte/signed byte/word/signed word) 0) goto mul_results_compare::@1 [ mul_results_compare::a#1 line_cursor#17 char_cursor#20 ] ( main:2::mul_results_compare:13 [ mul_results_compare::a#1 line_cursor#17 char_cursor#20 ] ) -- vbuz1_neq_0_then_la1 + lda a + bne b1_from_b6 + //SEG86 [43] phi from mul_results_compare::@6 to mul_results_compare::@7 [phi:mul_results_compare::@6->mul_results_compare::@7] + b7_from_b6: + jmp b7 + //SEG87 mul_results_compare::@7 + b7: + //SEG88 [44] call print_str param-assignment [ line_cursor#17 char_cursor#2 ] ( main:2::mul_results_compare:13 [ line_cursor#17 char_cursor#2 ] ) + //SEG89 [53] phi from mul_results_compare::@7 to print_str [phi:mul_results_compare::@7->print_str] + print_str_from_b7: + //SEG90 [53] phi (byte*) char_cursor#71 = (byte*) char_cursor#20 [phi:mul_results_compare::@7->print_str#0] -- register_copy + //SEG91 [53] phi (byte*) print_str::str#9 = (const string) mul_results_compare::str2 [phi:mul_results_compare::@7->print_str#1] -- pbuz1=pbuc1 + lda #str2 + sta print_str.str+1 + jsr print_str + //SEG92 [45] phi from mul_results_compare::@7 to mul_results_compare::@14 [phi:mul_results_compare::@7->mul_results_compare::@14] + b14_from_b7: + jmp b14 + //SEG93 mul_results_compare::@14 + b14: + //SEG94 [46] call print_ln param-assignment [ line_cursor#1 ] ( main:2::mul_results_compare:13 [ line_cursor#1 ] ) + //SEG95 [48] phi from mul_results_compare::@14 to print_ln [phi:mul_results_compare::@14->print_ln] + print_ln_from_b14: + //SEG96 [48] phi (byte*) line_cursor#22 = (byte*) line_cursor#17 [phi:mul_results_compare::@14->print_ln#0] -- register_copy + jsr print_ln + //SEG97 [47] (byte*~) char_cursor#89 ← (byte*) line_cursor#1 [ char_cursor#89 line_cursor#1 ] ( main:2::mul_results_compare:13 [ char_cursor#89 line_cursor#1 ] ) -- pbuz1=pbuz2 + lda line_cursor + sta char_cursor + lda line_cursor+1 + sta char_cursor+1 + jmp breturn_from_b14 + str: .text "multiply mismatch slow:@" + str1: .text " / fast asm:" + str2: .text "multiply results match!@" +} +//SEG98 print_ln +print_ln: { + //SEG99 [49] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1] + b1_from_print_ln: + b1_from_b1: + //SEG100 [49] phi (byte*) line_cursor#11 = (byte*) line_cursor#22 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy + jmp b1 + //SEG101 print_ln::@1 + b1: + //SEG102 [50] (byte*) line_cursor#1 ← (byte*) line_cursor#11 + (byte/signed byte/word/signed word) 40 [ line_cursor#1 char_cursor#2 ] ( main:2::mul_results_compare:13::print_ln:46 [ line_cursor#1 char_cursor#2 ] main:2::mul_tables_compare:11::print_ln:109 [ line_cursor#1 char_cursor#2 ] ) -- pbuz1=pbuz1_plus_vbuc1 + lda line_cursor + clc + adc #$28 + sta line_cursor + bcc !+ + inc line_cursor+1 + !: + //SEG103 [51] if((byte*) line_cursor#1<(byte*) char_cursor#2) goto print_ln::@1 [ line_cursor#1 char_cursor#2 ] ( main:2::mul_results_compare:13::print_ln:46 [ line_cursor#1 char_cursor#2 ] main:2::mul_tables_compare:11::print_ln:109 [ line_cursor#1 char_cursor#2 ] ) -- pbuz1_lt_pbuz2_then_la1 + lda line_cursor+1 + cmp char_cursor+1 + bcc b1_from_b1 + bne !+ + lda line_cursor + cmp char_cursor + bcc b1_from_b1 + !: + jmp breturn + //SEG104 print_ln::@return + breturn: + //SEG105 [52] return [ line_cursor#1 ] ( main:2::mul_results_compare:13::print_ln:46 [ line_cursor#1 ] main:2::mul_tables_compare:11::print_ln:109 [ line_cursor#1 ] ) + rts +} +//SEG106 print_str +print_str: { + .label str = 6 + //SEG107 [54] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] + b1_from_print_str: + b1_from_b2: + //SEG108 [54] phi (byte*) char_cursor#2 = (byte*) char_cursor#71 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy + //SEG109 [54] phi (byte*) print_str::str#7 = (byte*) print_str::str#9 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy + jmp b1 + //SEG110 print_str::@1 + b1: + //SEG111 [55] if(*((byte*) print_str::str#7)!=(byte) '@') goto print_str::@2 [ char_cursor#2 print_str::str#7 ] ( main:2::mul_results_compare:13::print_str:30 [ mul_results_compare::ms#0 mul_results_compare::ma#0 line_cursor#17 char_cursor#2 print_str::str#7 ] main:2::mul_results_compare:13::print_str:34 [ mul_results_compare::ma#0 line_cursor#17 char_cursor#2 print_str::str#7 ] main:2::mul_results_compare:13::print_str:44 [ line_cursor#17 char_cursor#2 print_str::str#7 ] main:2::mul_tables_compare:11::print_str:94 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 char_cursor#2 print_str::str#7 ] main:2::mul_tables_compare:11::print_str:98 [ mul_tables_compare::kc_sqr#2 char_cursor#2 print_str::str#7 ] main:2::mul_tables_compare:11::print_str:107 [ char_cursor#2 print_str::str#7 ] ) -- _deref_pbuz1_neq_vbuc1_then_la1 + ldy #0 + lda (str),y + cmp #'@' + bne b2 + jmp breturn + //SEG112 print_str::@return + breturn: + //SEG113 [56] return [ char_cursor#2 ] ( main:2::mul_results_compare:13::print_str:30 [ mul_results_compare::ms#0 mul_results_compare::ma#0 line_cursor#17 char_cursor#2 ] main:2::mul_results_compare:13::print_str:34 [ mul_results_compare::ma#0 line_cursor#17 char_cursor#2 ] main:2::mul_results_compare:13::print_str:44 [ line_cursor#17 char_cursor#2 ] main:2::mul_tables_compare:11::print_str:94 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 char_cursor#2 ] main:2::mul_tables_compare:11::print_str:98 [ mul_tables_compare::kc_sqr#2 char_cursor#2 ] main:2::mul_tables_compare:11::print_str:107 [ char_cursor#2 ] ) + rts + //SEG114 print_str::@2 + b2: + //SEG115 [57] *((byte*) char_cursor#2) ← *((byte*) print_str::str#7) [ char_cursor#2 print_str::str#7 ] ( main:2::mul_results_compare:13::print_str:30 [ mul_results_compare::ms#0 mul_results_compare::ma#0 line_cursor#17 char_cursor#2 print_str::str#7 ] main:2::mul_results_compare:13::print_str:34 [ mul_results_compare::ma#0 line_cursor#17 char_cursor#2 print_str::str#7 ] main:2::mul_results_compare:13::print_str:44 [ line_cursor#17 char_cursor#2 print_str::str#7 ] main:2::mul_tables_compare:11::print_str:94 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 char_cursor#2 print_str::str#7 ] main:2::mul_tables_compare:11::print_str:98 [ mul_tables_compare::kc_sqr#2 char_cursor#2 print_str::str#7 ] main:2::mul_tables_compare:11::print_str:107 [ char_cursor#2 print_str::str#7 ] ) -- _deref_pbuz1=_deref_pbuz2 + ldy #0 + lda (str),y + ldy #0 + sta (char_cursor),y + //SEG116 [58] (byte*) char_cursor#1 ← ++ (byte*) char_cursor#2 [ print_str::str#7 char_cursor#1 ] ( main:2::mul_results_compare:13::print_str:30 [ mul_results_compare::ms#0 mul_results_compare::ma#0 line_cursor#17 print_str::str#7 char_cursor#1 ] main:2::mul_results_compare:13::print_str:34 [ mul_results_compare::ma#0 line_cursor#17 print_str::str#7 char_cursor#1 ] main:2::mul_results_compare:13::print_str:44 [ line_cursor#17 print_str::str#7 char_cursor#1 ] main:2::mul_tables_compare:11::print_str:94 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 print_str::str#7 char_cursor#1 ] main:2::mul_tables_compare:11::print_str:98 [ mul_tables_compare::kc_sqr#2 print_str::str#7 char_cursor#1 ] main:2::mul_tables_compare:11::print_str:107 [ print_str::str#7 char_cursor#1 ] ) -- pbuz1=_inc_pbuz1 + inc char_cursor + bne !+ + inc char_cursor+1 + !: + //SEG117 [59] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#7 [ print_str::str#0 char_cursor#1 ] ( main:2::mul_results_compare:13::print_str:30 [ mul_results_compare::ms#0 mul_results_compare::ma#0 line_cursor#17 print_str::str#0 char_cursor#1 ] main:2::mul_results_compare:13::print_str:34 [ mul_results_compare::ma#0 line_cursor#17 print_str::str#0 char_cursor#1 ] main:2::mul_results_compare:13::print_str:44 [ line_cursor#17 print_str::str#0 char_cursor#1 ] main:2::mul_tables_compare:11::print_str:94 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 print_str::str#0 char_cursor#1 ] main:2::mul_tables_compare:11::print_str:98 [ mul_tables_compare::kc_sqr#2 print_str::str#0 char_cursor#1 ] main:2::mul_tables_compare:11::print_str:107 [ print_str::str#0 char_cursor#1 ] ) -- pbuz1=_inc_pbuz1 + inc str + bne !+ + inc str+1 + !: + jmp b1_from_b2 +} +//SEG118 print_word +print_word: { + .label w = 8 + //SEG119 [61] (byte) print_byte::b#0 ← > (word) print_word::w#4 [ char_cursor#2 print_word::w#4 print_byte::b#0 ] ( main:2::mul_results_compare:13::print_word:32 [ mul_results_compare::ma#0 line_cursor#17 char_cursor#2 print_word::w#4 print_byte::b#0 ] main:2::mul_results_compare:13::print_word:36 [ line_cursor#17 char_cursor#2 print_word::w#4 print_byte::b#0 ] main:2::mul_tables_compare:11::print_word:96 [ mul_tables_compare::kc_sqr#2 char_cursor#2 print_word::w#4 print_byte::b#0 ] main:2::mul_tables_compare:11::print_word:100 [ char_cursor#2 print_word::w#4 print_byte::b#0 ] ) -- vbuz1=_hi_vwuz2 + lda w+1 + sta print_byte.b + //SEG120 [62] call print_byte param-assignment [ char_cursor#11 print_word::w#4 ] ( main:2::mul_results_compare:13::print_word:32 [ mul_results_compare::ma#0 line_cursor#17 char_cursor#11 print_word::w#4 ] main:2::mul_results_compare:13::print_word:36 [ line_cursor#17 char_cursor#11 print_word::w#4 ] main:2::mul_tables_compare:11::print_word:96 [ mul_tables_compare::kc_sqr#2 char_cursor#11 print_word::w#4 ] main:2::mul_tables_compare:11::print_word:100 [ char_cursor#11 print_word::w#4 ] ) + //SEG121 [66] phi from print_word to print_byte [phi:print_word->print_byte] + print_byte_from_print_word: + //SEG122 [66] phi (byte*) char_cursor#64 = (byte*) char_cursor#2 [phi:print_word->print_byte#0] -- register_copy + //SEG123 [66] phi (byte) print_byte::b#2 = (byte) print_byte::b#0 [phi:print_word->print_byte#1] -- register_copy + jsr print_byte + jmp b1 + //SEG124 print_word::@1 + b1: + //SEG125 [63] (byte) print_byte::b#1 ← < (word) print_word::w#4 [ char_cursor#11 print_byte::b#1 ] ( main:2::mul_results_compare:13::print_word:32 [ mul_results_compare::ma#0 line_cursor#17 char_cursor#11 print_byte::b#1 ] main:2::mul_results_compare:13::print_word:36 [ line_cursor#17 char_cursor#11 print_byte::b#1 ] main:2::mul_tables_compare:11::print_word:96 [ mul_tables_compare::kc_sqr#2 char_cursor#11 print_byte::b#1 ] main:2::mul_tables_compare:11::print_word:100 [ char_cursor#11 print_byte::b#1 ] ) -- vbuz1=_lo_vwuz2 + lda w + sta print_byte.b + //SEG126 [64] call print_byte param-assignment [ char_cursor#11 ] ( main:2::mul_results_compare:13::print_word:32 [ mul_results_compare::ma#0 line_cursor#17 char_cursor#11 ] main:2::mul_results_compare:13::print_word:36 [ line_cursor#17 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:96 [ mul_tables_compare::kc_sqr#2 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:100 [ char_cursor#11 ] ) + //SEG127 [66] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] + print_byte_from_b1: + //SEG128 [66] phi (byte*) char_cursor#64 = (byte*) char_cursor#11 [phi:print_word::@1->print_byte#0] -- register_copy + //SEG129 [66] phi (byte) print_byte::b#2 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#1] -- register_copy + jsr print_byte + jmp breturn + //SEG130 print_word::@return + breturn: + //SEG131 [65] return [ char_cursor#11 ] ( main:2::mul_results_compare:13::print_word:32 [ mul_results_compare::ma#0 line_cursor#17 char_cursor#11 ] main:2::mul_results_compare:13::print_word:36 [ line_cursor#17 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:96 [ mul_tables_compare::kc_sqr#2 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:100 [ char_cursor#11 ] ) + rts +} +//SEG132 print_byte +print_byte: { + .label _0 = $31 + .label _2 = $32 + .label b = $a + //SEG133 [67] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word) 4 [ print_byte::b#2 char_cursor#64 print_byte::$0 ] ( main:2::mul_results_compare:13::print_word:32::print_byte:62 [ mul_results_compare::ma#0 line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#64 print_byte::$0 ] main:2::mul_results_compare:13::print_word:36::print_byte:62 [ line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#64 print_byte::$0 ] main:2::mul_tables_compare:11::print_word:96::print_byte:62 [ mul_tables_compare::kc_sqr#2 print_word::w#4 print_byte::b#2 char_cursor#64 print_byte::$0 ] main:2::mul_tables_compare:11::print_word:100::print_byte:62 [ print_word::w#4 print_byte::b#2 char_cursor#64 print_byte::$0 ] main:2::mul_results_compare:13::print_word:32::print_byte:64 [ mul_results_compare::ma#0 line_cursor#17 print_byte::b#2 char_cursor#64 print_byte::$0 ] main:2::mul_results_compare:13::print_word:36::print_byte:64 [ line_cursor#17 print_byte::b#2 char_cursor#64 print_byte::$0 ] main:2::mul_tables_compare:11::print_word:96::print_byte:64 [ mul_tables_compare::kc_sqr#2 print_byte::b#2 char_cursor#64 print_byte::$0 ] main:2::mul_tables_compare:11::print_word:100::print_byte:64 [ print_byte::b#2 char_cursor#64 print_byte::$0 ] ) -- vbuz1=vbuz2_ror_4 + lda b + lsr + lsr + lsr + lsr + sta _0 + //SEG134 [68] (byte) print_char::ch#0 ← *((const byte[]) print_byte::hextab#0 + (byte~) print_byte::$0) [ print_byte::b#2 char_cursor#64 print_char::ch#0 ] ( main:2::mul_results_compare:13::print_word:32::print_byte:62 [ mul_results_compare::ma#0 line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#64 print_char::ch#0 ] main:2::mul_results_compare:13::print_word:36::print_byte:62 [ line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#64 print_char::ch#0 ] main:2::mul_tables_compare:11::print_word:96::print_byte:62 [ mul_tables_compare::kc_sqr#2 print_word::w#4 print_byte::b#2 char_cursor#64 print_char::ch#0 ] main:2::mul_tables_compare:11::print_word:100::print_byte:62 [ print_word::w#4 print_byte::b#2 char_cursor#64 print_char::ch#0 ] main:2::mul_results_compare:13::print_word:32::print_byte:64 [ mul_results_compare::ma#0 line_cursor#17 print_byte::b#2 char_cursor#64 print_char::ch#0 ] main:2::mul_results_compare:13::print_word:36::print_byte:64 [ line_cursor#17 print_byte::b#2 char_cursor#64 print_char::ch#0 ] main:2::mul_tables_compare:11::print_word:96::print_byte:64 [ mul_tables_compare::kc_sqr#2 print_byte::b#2 char_cursor#64 print_char::ch#0 ] main:2::mul_tables_compare:11::print_word:100::print_byte:64 [ print_byte::b#2 char_cursor#64 print_char::ch#0 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 + ldx _0 + lda hextab,x + sta print_char.ch + //SEG135 [69] call print_char param-assignment [ char_cursor#11 print_byte::b#2 ] ( main:2::mul_results_compare:13::print_word:32::print_byte:62 [ mul_results_compare::ma#0 line_cursor#17 print_word::w#4 char_cursor#11 print_byte::b#2 ] main:2::mul_results_compare:13::print_word:36::print_byte:62 [ line_cursor#17 print_word::w#4 char_cursor#11 print_byte::b#2 ] main:2::mul_tables_compare:11::print_word:96::print_byte:62 [ mul_tables_compare::kc_sqr#2 print_word::w#4 char_cursor#11 print_byte::b#2 ] main:2::mul_tables_compare:11::print_word:100::print_byte:62 [ print_word::w#4 char_cursor#11 print_byte::b#2 ] main:2::mul_results_compare:13::print_word:32::print_byte:64 [ mul_results_compare::ma#0 line_cursor#17 char_cursor#11 print_byte::b#2 ] main:2::mul_results_compare:13::print_word:36::print_byte:64 [ line_cursor#17 char_cursor#11 print_byte::b#2 ] main:2::mul_tables_compare:11::print_word:96::print_byte:64 [ mul_tables_compare::kc_sqr#2 char_cursor#11 print_byte::b#2 ] main:2::mul_tables_compare:11::print_word:100::print_byte:64 [ char_cursor#11 print_byte::b#2 ] ) + //SEG136 [74] phi from print_byte to print_char [phi:print_byte->print_char] + print_char_from_print_byte: + //SEG137 [74] phi (byte*) char_cursor#41 = (byte*) char_cursor#64 [phi:print_byte->print_char#0] -- register_copy + //SEG138 [74] phi (byte) print_char::ch#2 = (byte) print_char::ch#0 [phi:print_byte->print_char#1] -- register_copy + jsr print_char + jmp b1 + //SEG139 print_byte::@1 + b1: + //SEG140 [70] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word) 15 [ char_cursor#11 print_byte::$2 ] ( main:2::mul_results_compare:13::print_word:32::print_byte:62 [ mul_results_compare::ma#0 line_cursor#17 print_word::w#4 char_cursor#11 print_byte::$2 ] main:2::mul_results_compare:13::print_word:36::print_byte:62 [ line_cursor#17 print_word::w#4 char_cursor#11 print_byte::$2 ] main:2::mul_tables_compare:11::print_word:96::print_byte:62 [ mul_tables_compare::kc_sqr#2 print_word::w#4 char_cursor#11 print_byte::$2 ] main:2::mul_tables_compare:11::print_word:100::print_byte:62 [ print_word::w#4 char_cursor#11 print_byte::$2 ] main:2::mul_results_compare:13::print_word:32::print_byte:64 [ mul_results_compare::ma#0 line_cursor#17 char_cursor#11 print_byte::$2 ] main:2::mul_results_compare:13::print_word:36::print_byte:64 [ line_cursor#17 char_cursor#11 print_byte::$2 ] main:2::mul_tables_compare:11::print_word:96::print_byte:64 [ mul_tables_compare::kc_sqr#2 char_cursor#11 print_byte::$2 ] main:2::mul_tables_compare:11::print_word:100::print_byte:64 [ char_cursor#11 print_byte::$2 ] ) -- vbuz1=vbuz2_band_vbuc1 + lda b + and #$f + sta _2 + //SEG141 [71] (byte) print_char::ch#1 ← *((const byte[]) print_byte::hextab#0 + (byte~) print_byte::$2) [ char_cursor#11 print_char::ch#1 ] ( main:2::mul_results_compare:13::print_word:32::print_byte:62 [ mul_results_compare::ma#0 line_cursor#17 print_word::w#4 char_cursor#11 print_char::ch#1 ] main:2::mul_results_compare:13::print_word:36::print_byte:62 [ line_cursor#17 print_word::w#4 char_cursor#11 print_char::ch#1 ] main:2::mul_tables_compare:11::print_word:96::print_byte:62 [ mul_tables_compare::kc_sqr#2 print_word::w#4 char_cursor#11 print_char::ch#1 ] main:2::mul_tables_compare:11::print_word:100::print_byte:62 [ print_word::w#4 char_cursor#11 print_char::ch#1 ] main:2::mul_results_compare:13::print_word:32::print_byte:64 [ mul_results_compare::ma#0 line_cursor#17 char_cursor#11 print_char::ch#1 ] main:2::mul_results_compare:13::print_word:36::print_byte:64 [ line_cursor#17 char_cursor#11 print_char::ch#1 ] main:2::mul_tables_compare:11::print_word:96::print_byte:64 [ mul_tables_compare::kc_sqr#2 char_cursor#11 print_char::ch#1 ] main:2::mul_tables_compare:11::print_word:100::print_byte:64 [ char_cursor#11 print_char::ch#1 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 + ldx _2 + lda hextab,x + sta print_char.ch + //SEG142 [72] call print_char param-assignment [ char_cursor#11 ] ( main:2::mul_results_compare:13::print_word:32::print_byte:62 [ mul_results_compare::ma#0 line_cursor#17 print_word::w#4 char_cursor#11 ] main:2::mul_results_compare:13::print_word:36::print_byte:62 [ line_cursor#17 print_word::w#4 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:96::print_byte:62 [ mul_tables_compare::kc_sqr#2 print_word::w#4 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:100::print_byte:62 [ print_word::w#4 char_cursor#11 ] main:2::mul_results_compare:13::print_word:32::print_byte:64 [ mul_results_compare::ma#0 line_cursor#17 char_cursor#11 ] main:2::mul_results_compare:13::print_word:36::print_byte:64 [ line_cursor#17 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:96::print_byte:64 [ mul_tables_compare::kc_sqr#2 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:100::print_byte:64 [ char_cursor#11 ] ) + //SEG143 [74] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] + print_char_from_b1: + //SEG144 [74] phi (byte*) char_cursor#41 = (byte*) char_cursor#11 [phi:print_byte::@1->print_char#0] -- register_copy + //SEG145 [74] phi (byte) print_char::ch#2 = (byte) print_char::ch#1 [phi:print_byte::@1->print_char#1] -- register_copy + jsr print_char + jmp breturn + //SEG146 print_byte::@return + breturn: + //SEG147 [73] return [ char_cursor#11 ] ( main:2::mul_results_compare:13::print_word:32::print_byte:62 [ mul_results_compare::ma#0 line_cursor#17 print_word::w#4 char_cursor#11 ] main:2::mul_results_compare:13::print_word:36::print_byte:62 [ line_cursor#17 print_word::w#4 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:96::print_byte:62 [ mul_tables_compare::kc_sqr#2 print_word::w#4 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:100::print_byte:62 [ print_word::w#4 char_cursor#11 ] main:2::mul_results_compare:13::print_word:32::print_byte:64 [ mul_results_compare::ma#0 line_cursor#17 char_cursor#11 ] main:2::mul_results_compare:13::print_word:36::print_byte:64 [ line_cursor#17 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:96::print_byte:64 [ mul_tables_compare::kc_sqr#2 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:100::print_byte:64 [ char_cursor#11 ] ) + rts + hextab: .byte '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' +} +//SEG148 print_char +print_char: { + .label ch = $b + //SEG149 [75] *((byte*) char_cursor#41) ← (byte) print_char::ch#2 [ char_cursor#41 ] ( main:2::mul_results_compare:13::print_word:32::print_byte:62::print_char:69 [ mul_results_compare::ma#0 line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#41 ] main:2::mul_results_compare:13::print_word:36::print_byte:62::print_char:69 [ line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#41 ] main:2::mul_tables_compare:11::print_word:96::print_byte:62::print_char:69 [ mul_tables_compare::kc_sqr#2 print_word::w#4 print_byte::b#2 char_cursor#41 ] main:2::mul_tables_compare:11::print_word:100::print_byte:62::print_char:69 [ print_word::w#4 print_byte::b#2 char_cursor#41 ] main:2::mul_results_compare:13::print_word:32::print_byte:64::print_char:69 [ mul_results_compare::ma#0 line_cursor#17 print_byte::b#2 char_cursor#41 ] main:2::mul_results_compare:13::print_word:36::print_byte:64::print_char:69 [ line_cursor#17 print_byte::b#2 char_cursor#41 ] main:2::mul_tables_compare:11::print_word:96::print_byte:64::print_char:69 [ mul_tables_compare::kc_sqr#2 print_byte::b#2 char_cursor#41 ] main:2::mul_tables_compare:11::print_word:100::print_byte:64::print_char:69 [ print_byte::b#2 char_cursor#41 ] main:2::mul_results_compare:13::print_word:32::print_byte:62::print_char:72 [ mul_results_compare::ma#0 line_cursor#17 print_word::w#4 char_cursor#41 ] main:2::mul_results_compare:13::print_word:36::print_byte:62::print_char:72 [ line_cursor#17 print_word::w#4 char_cursor#41 ] main:2::mul_tables_compare:11::print_word:96::print_byte:62::print_char:72 [ mul_tables_compare::kc_sqr#2 print_word::w#4 char_cursor#41 ] main:2::mul_tables_compare:11::print_word:100::print_byte:62::print_char:72 [ print_word::w#4 char_cursor#41 ] main:2::mul_results_compare:13::print_word:32::print_byte:64::print_char:72 [ mul_results_compare::ma#0 line_cursor#17 char_cursor#41 ] main:2::mul_results_compare:13::print_word:36::print_byte:64::print_char:72 [ line_cursor#17 char_cursor#41 ] main:2::mul_tables_compare:11::print_word:96::print_byte:64::print_char:72 [ mul_tables_compare::kc_sqr#2 char_cursor#41 ] main:2::mul_tables_compare:11::print_word:100::print_byte:64::print_char:72 [ char_cursor#41 ] ) -- _deref_pbuz1=vbuz2 + ldy #0 + lda ch + sta (char_cursor),y + //SEG150 [76] (byte*) char_cursor#11 ← ++ (byte*) char_cursor#41 [ char_cursor#11 ] ( main:2::mul_results_compare:13::print_word:32::print_byte:62::print_char:69 [ mul_results_compare::ma#0 line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#11 ] main:2::mul_results_compare:13::print_word:36::print_byte:62::print_char:69 [ line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:96::print_byte:62::print_char:69 [ mul_tables_compare::kc_sqr#2 print_word::w#4 print_byte::b#2 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:100::print_byte:62::print_char:69 [ print_word::w#4 print_byte::b#2 char_cursor#11 ] main:2::mul_results_compare:13::print_word:32::print_byte:64::print_char:69 [ mul_results_compare::ma#0 line_cursor#17 print_byte::b#2 char_cursor#11 ] main:2::mul_results_compare:13::print_word:36::print_byte:64::print_char:69 [ line_cursor#17 print_byte::b#2 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:96::print_byte:64::print_char:69 [ mul_tables_compare::kc_sqr#2 print_byte::b#2 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:100::print_byte:64::print_char:69 [ print_byte::b#2 char_cursor#11 ] main:2::mul_results_compare:13::print_word:32::print_byte:62::print_char:72 [ mul_results_compare::ma#0 line_cursor#17 print_word::w#4 char_cursor#11 ] main:2::mul_results_compare:13::print_word:36::print_byte:62::print_char:72 [ line_cursor#17 print_word::w#4 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:96::print_byte:62::print_char:72 [ mul_tables_compare::kc_sqr#2 print_word::w#4 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:100::print_byte:62::print_char:72 [ print_word::w#4 char_cursor#11 ] main:2::mul_results_compare:13::print_word:32::print_byte:64::print_char:72 [ mul_results_compare::ma#0 line_cursor#17 char_cursor#11 ] main:2::mul_results_compare:13::print_word:36::print_byte:64::print_char:72 [ line_cursor#17 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:96::print_byte:64::print_char:72 [ mul_tables_compare::kc_sqr#2 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:100::print_byte:64::print_char:72 [ char_cursor#11 ] ) -- pbuz1=_inc_pbuz1 + inc char_cursor + bne !+ + inc char_cursor+1 + !: + jmp breturn + //SEG151 print_char::@return + breturn: + //SEG152 [77] return [ char_cursor#11 ] ( main:2::mul_results_compare:13::print_word:32::print_byte:62::print_char:69 [ mul_results_compare::ma#0 line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#11 ] main:2::mul_results_compare:13::print_word:36::print_byte:62::print_char:69 [ line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:96::print_byte:62::print_char:69 [ mul_tables_compare::kc_sqr#2 print_word::w#4 print_byte::b#2 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:100::print_byte:62::print_char:69 [ print_word::w#4 print_byte::b#2 char_cursor#11 ] main:2::mul_results_compare:13::print_word:32::print_byte:64::print_char:69 [ mul_results_compare::ma#0 line_cursor#17 print_byte::b#2 char_cursor#11 ] main:2::mul_results_compare:13::print_word:36::print_byte:64::print_char:69 [ line_cursor#17 print_byte::b#2 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:96::print_byte:64::print_char:69 [ mul_tables_compare::kc_sqr#2 print_byte::b#2 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:100::print_byte:64::print_char:69 [ print_byte::b#2 char_cursor#11 ] main:2::mul_results_compare:13::print_word:32::print_byte:62::print_char:72 [ mul_results_compare::ma#0 line_cursor#17 print_word::w#4 char_cursor#11 ] main:2::mul_results_compare:13::print_word:36::print_byte:62::print_char:72 [ line_cursor#17 print_word::w#4 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:96::print_byte:62::print_char:72 [ mul_tables_compare::kc_sqr#2 print_word::w#4 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:100::print_byte:62::print_char:72 [ print_word::w#4 char_cursor#11 ] main:2::mul_results_compare:13::print_word:32::print_byte:64::print_char:72 [ mul_results_compare::ma#0 line_cursor#17 char_cursor#11 ] main:2::mul_results_compare:13::print_word:36::print_byte:64::print_char:72 [ line_cursor#17 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:96::print_byte:64::print_char:72 [ mul_tables_compare::kc_sqr#2 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:100::print_byte:64::print_char:72 [ char_cursor#11 ] ) + rts +} +//SEG153 asm_multiply +asm_multiply: { + .const memA = $fe + .const memB = $ff + .label return = $33 + .label a = $2b + .label b = $2c + .label return_2 = $2d + //SEG154 [78] *((const byte*) asm_multiply::memA#0) ← (byte) asm_multiply::a#0 [ asm_multiply::b#0 ] ( main:2::mul_results_compare:13::asm_multiply:25 [ mul_results_compare::a#5 mul_results_compare::b#2 mul_results_compare::ms#0 line_cursor#17 char_cursor#20 asm_multiply::b#0 ] ) -- _deref_pbuc1=vbuz1 + lda a + sta memA + //SEG155 [79] *((const byte*) asm_multiply::memB#0) ← (byte) asm_multiply::b#0 [ ] ( main:2::mul_results_compare:13::asm_multiply:25 [ mul_results_compare::a#5 mul_results_compare::b#2 mul_results_compare::ms#0 line_cursor#17 char_cursor#20 ] ) -- _deref_pbuc1=vbuz1 + lda b + sta memB + //SEG156 asm { ldamemAstasm1+1stasm3+1eor#$ffstasm2+1stasm4+1ldxmemBsecsm1:ldaasm_mul_sqr1_lo,xsm2:sbcasm_mul_sqr2_lo,xstamemAsm3:ldaasm_mul_sqr1_hi,xsm4:sbcasm_mul_sqr2_hi,xstamemB } + lda memA + sta sm1+1 + sta sm3+1 + eor #$ff + sta sm2+1 + sta sm4+1 + ldx memB + sec + sm1: + lda asm_mul_sqr1_lo,x + sm2: + sbc asm_mul_sqr2_lo,x + sta memA + sm3: + lda asm_mul_sqr1_hi,x + sm4: + sbc asm_mul_sqr2_hi,x + sta memB + //SEG157 [81] (word) asm_multiply::return#0 ← *((const byte*) asm_multiply::memB#0) w= *((const byte*) asm_multiply::memA#0) [ asm_multiply::return#0 ] ( main:2::mul_results_compare:13::asm_multiply:25 [ mul_results_compare::a#5 mul_results_compare::b#2 mul_results_compare::ms#0 line_cursor#17 char_cursor#20 asm_multiply::return#0 ] ) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 + lda memA + sta return + lda memB + sta return+1 + jmp breturn + //SEG158 asm_multiply::@return + breturn: + //SEG159 [82] return [ asm_multiply::return#0 ] ( main:2::mul_results_compare:13::asm_multiply:25 [ mul_results_compare::a#5 mul_results_compare::b#2 mul_results_compare::ms#0 line_cursor#17 char_cursor#20 asm_multiply::return#0 ] ) + rts +} +//SEG160 slow_multiply +slow_multiply: { + .label return = $f + .label m = $f + .label i = $e + .label a = $25 + .label b = $26 + .label return_2 = $27 + //SEG161 [83] if((byte) slow_multiply::a#0<=(byte/signed byte/word/signed word) 0) goto slow_multiply::@1 [ slow_multiply::a#0 slow_multiply::b#0 ] ( main:2::mul_results_compare:13::slow_multiply:20 [ mul_results_compare::a#5 mul_results_compare::b#2 line_cursor#17 char_cursor#20 slow_multiply::a#0 slow_multiply::b#0 ] ) -- vbuz1_le_0_then_la1 + lda a + cmp #0 + beq b1_from_slow_multiply + //SEG162 [84] phi from slow_multiply to slow_multiply::@2 [phi:slow_multiply->slow_multiply::@2] + b2_from_slow_multiply: + //SEG163 [84] phi (byte) slow_multiply::i#2 = (byte/signed byte/word/signed word) 0 [phi:slow_multiply->slow_multiply::@2#0] -- vbuz1=vbuc1 + lda #0 + sta i + //SEG164 [84] phi (word) slow_multiply::m#3 = (byte/signed byte/word/signed word) 0 [phi:slow_multiply->slow_multiply::@2#1] -- vwuz1=vbuc1 + lda #0 + sta m + lda #0 + sta m+1 + jmp b2 + //SEG165 [84] phi from slow_multiply::@2 to slow_multiply::@2 [phi:slow_multiply::@2->slow_multiply::@2] + b2_from_b2: + //SEG166 [84] phi (byte) slow_multiply::i#2 = (byte) slow_multiply::i#1 [phi:slow_multiply::@2->slow_multiply::@2#0] -- register_copy + //SEG167 [84] phi (word) slow_multiply::m#3 = (word) slow_multiply::m#1 [phi:slow_multiply::@2->slow_multiply::@2#1] -- register_copy + jmp b2 + //SEG168 slow_multiply::@2 + b2: + //SEG169 [85] (word) slow_multiply::m#1 ← (word) slow_multiply::m#3 + (byte) slow_multiply::b#0 [ slow_multiply::a#0 slow_multiply::b#0 slow_multiply::i#2 slow_multiply::m#1 ] ( main:2::mul_results_compare:13::slow_multiply:20 [ mul_results_compare::a#5 mul_results_compare::b#2 line_cursor#17 char_cursor#20 slow_multiply::a#0 slow_multiply::b#0 slow_multiply::i#2 slow_multiply::m#1 ] ) -- vwuz1=vwuz1_plus_vbuz2 + lda b + clc + adc m + sta m + bcc !+ + inc m+1 + !: + //SEG170 [86] (byte) slow_multiply::i#1 ← ++ (byte) slow_multiply::i#2 [ slow_multiply::a#0 slow_multiply::b#0 slow_multiply::m#1 slow_multiply::i#1 ] ( main:2::mul_results_compare:13::slow_multiply:20 [ mul_results_compare::a#5 mul_results_compare::b#2 line_cursor#17 char_cursor#20 slow_multiply::a#0 slow_multiply::b#0 slow_multiply::m#1 slow_multiply::i#1 ] ) -- vbuz1=_inc_vbuz1 + inc i + //SEG171 [87] if((byte) slow_multiply::i#1!=(byte) slow_multiply::a#0) goto slow_multiply::@2 [ slow_multiply::a#0 slow_multiply::b#0 slow_multiply::m#1 slow_multiply::i#1 ] ( main:2::mul_results_compare:13::slow_multiply:20 [ mul_results_compare::a#5 mul_results_compare::b#2 line_cursor#17 char_cursor#20 slow_multiply::a#0 slow_multiply::b#0 slow_multiply::m#1 slow_multiply::i#1 ] ) -- vbuz1_neq_vbuz2_then_la1 + lda i + cmp a + bne b2_from_b2 + //SEG172 [88] phi from slow_multiply::@2 to slow_multiply::@1 [phi:slow_multiply::@2->slow_multiply::@1] + b1_from_b2: + //SEG173 [88] phi (word) slow_multiply::return#0 = (word) slow_multiply::m#1 [phi:slow_multiply::@2->slow_multiply::@1#0] -- register_copy + jmp b1 + //SEG174 [88] phi from slow_multiply to slow_multiply::@1 [phi:slow_multiply->slow_multiply::@1] + b1_from_slow_multiply: + //SEG175 [88] phi (word) slow_multiply::return#0 = (byte/signed byte/word/signed word) 0 [phi:slow_multiply->slow_multiply::@1#0] -- vwuz1=vbuc1 + lda #0 + sta return + lda #0 + sta return+1 + jmp b1 + //SEG176 slow_multiply::@1 + b1: + jmp breturn + //SEG177 slow_multiply::@return + breturn: + //SEG178 [89] return [ slow_multiply::return#0 ] ( main:2::mul_results_compare:13::slow_multiply:20 [ mul_results_compare::a#5 mul_results_compare::b#2 line_cursor#17 char_cursor#20 slow_multiply::return#0 ] ) + rts +} +//SEG179 mul_tables_compare +mul_tables_compare: { + .label asm_sqr = $13 + .label kc_sqr = $11 + //SEG180 [91] phi from mul_tables_compare to mul_tables_compare::@1 [phi:mul_tables_compare->mul_tables_compare::@1] b1_from_mul_tables_compare: - //SEG23 [12] phi (byte*) mul_tables_compare::asm_sqr#2 = (const byte[512]) asm_mul_sqr1_lo#0 [phi:mul_tables_compare->mul_tables_compare::@1#0] -- pbuz1=pbuc1 + //SEG181 [91] phi (byte*) mul_tables_compare::asm_sqr#2 = (const byte[512]) asm_mul_sqr1_lo#0 [phi:mul_tables_compare->mul_tables_compare::@1#0] -- pbuz1=pbuc1 lda #asm_mul_sqr1_lo sta asm_sqr+1 - //SEG24 [12] phi (byte*) mul_tables_compare::kc_sqr#2 = (const byte[512]) mul_sqr1_lo#0 [phi:mul_tables_compare->mul_tables_compare::@1#1] -- pbuz1=pbuc1 + //SEG182 [91] phi (byte*) mul_tables_compare::kc_sqr#2 = (const byte[512]) mul_sqr1_lo#0 [phi:mul_tables_compare->mul_tables_compare::@1#1] -- pbuz1=pbuc1 lda #mul_sqr1_lo sta kc_sqr+1 jmp b1 - //SEG25 [12] phi from mul_tables_compare::@2 to mul_tables_compare::@1 [phi:mul_tables_compare::@2->mul_tables_compare::@1] + //SEG183 [91] phi from mul_tables_compare::@2 to mul_tables_compare::@1 [phi:mul_tables_compare::@2->mul_tables_compare::@1] b1_from_b2: - //SEG26 [12] phi (byte*) mul_tables_compare::asm_sqr#2 = (byte*) mul_tables_compare::asm_sqr#1 [phi:mul_tables_compare::@2->mul_tables_compare::@1#0] -- register_copy - //SEG27 [12] phi (byte*) mul_tables_compare::kc_sqr#2 = (byte*) mul_tables_compare::kc_sqr#1 [phi:mul_tables_compare::@2->mul_tables_compare::@1#1] -- register_copy + //SEG184 [91] phi (byte*) mul_tables_compare::asm_sqr#2 = (byte*) mul_tables_compare::asm_sqr#1 [phi:mul_tables_compare::@2->mul_tables_compare::@1#0] -- register_copy + //SEG185 [91] phi (byte*) mul_tables_compare::kc_sqr#2 = (byte*) mul_tables_compare::kc_sqr#1 [phi:mul_tables_compare::@2->mul_tables_compare::@1#1] -- register_copy jmp b1 - //SEG28 mul_tables_compare::@1 + //SEG186 mul_tables_compare::@1 b1: - //SEG29 [13] if(*((byte*) mul_tables_compare::kc_sqr#2)==*((byte*) mul_tables_compare::asm_sqr#2)) goto mul_tables_compare::@2 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 ] ( main:2::mul_tables_compare:9 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 ] ) -- _deref_pbuz1_eq__deref_pbuz2_then_la1 + //SEG187 [92] if(*((byte*) mul_tables_compare::kc_sqr#2)==*((byte*) mul_tables_compare::asm_sqr#2)) goto mul_tables_compare::@2 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 ] ( main:2::mul_tables_compare:11 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 ] ) -- _deref_pbuz1_eq__deref_pbuz2_then_la1 ldy #0 lda (kc_sqr),y ldy #0 cmp (asm_sqr),y beq b2 jmp b3 - //SEG30 mul_tables_compare::@3 + //SEG188 mul_tables_compare::@3 b3: - //SEG31 [14] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 2 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 ] ( main:2::mul_tables_compare:9 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 ] ) -- _deref_pbuc1=vbuc2 + //SEG189 [93] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 2 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 ] ( main:2::mul_tables_compare:11 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 ] ) -- _deref_pbuc1=vbuc2 lda #2 sta BGCOL - //SEG32 [15] call print_cls param-assignment [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 ] ( main:2::mul_tables_compare:9 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 ] ) - //SEG33 [54] phi from mul_tables_compare::@3 to print_cls [phi:mul_tables_compare::@3->print_cls] - print_cls_from_b3: - jsr print_cls - //SEG34 [16] phi from mul_tables_compare::@3 to mul_tables_compare::@6 [phi:mul_tables_compare::@3->mul_tables_compare::@6] - b6_from_b3: - jmp b6 - //SEG35 mul_tables_compare::@6 - b6: - //SEG36 [17] call print_str param-assignment [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 char_cursor#19 ] ( main:2::mul_tables_compare:9 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 char_cursor#19 ] ) - //SEG37 [47] phi from mul_tables_compare::@6 to print_str [phi:mul_tables_compare::@6->print_str] - print_str_from_b6: - //SEG38 [47] phi (byte*) char_cursor#44 = ((byte*))(word/signed word) 1024 [phi:mul_tables_compare::@6->print_str#0] -- pbuz1=pbuc1 + //SEG190 [94] call print_str param-assignment [ char_cursor#2 mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 ] ( main:2::mul_tables_compare:11 [ char_cursor#2 mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 ] ) + //SEG191 [53] phi from mul_tables_compare::@3 to print_str [phi:mul_tables_compare::@3->print_str] + print_str_from_b3: + //SEG192 [53] phi (byte*) char_cursor#71 = ((byte*))(word/signed word) 1024 [phi:mul_tables_compare::@3->print_str#0] -- pbuz1=pbuc1 lda #<$400 sta char_cursor lda #>$400 sta char_cursor+1 - //SEG39 [47] phi (byte*) print_str::str#5 = (const string) mul_tables_compare::str [phi:mul_tables_compare::@6->print_str#1] -- pbuz1=pbuc1 + //SEG193 [53] phi (byte*) print_str::str#9 = (const string) mul_tables_compare::str [phi:mul_tables_compare::@3->print_str#1] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str - jmp b7 - //SEG40 mul_tables_compare::@7 - b7: - //SEG41 [18] (word) print_word::w#0 ← ((word)) (byte*) mul_tables_compare::asm_sqr#2 [ mul_tables_compare::kc_sqr#2 print_word::w#0 char_cursor#19 ] ( main:2::mul_tables_compare:9 [ mul_tables_compare::kc_sqr#2 print_word::w#0 char_cursor#19 ] ) -- vwuz1=_word_pbuz2 + jmp b6 + //SEG194 mul_tables_compare::@6 + b6: + //SEG195 [95] (word) print_word::w#0 ← ((word)) (byte*) mul_tables_compare::asm_sqr#2 [ char_cursor#2 print_word::w#0 mul_tables_compare::kc_sqr#2 ] ( main:2::mul_tables_compare:11 [ char_cursor#2 print_word::w#0 mul_tables_compare::kc_sqr#2 ] ) -- vwuz1=_word_pbuz2 lda asm_sqr sta print_word.w lda asm_sqr+1 sta print_word.w+1 - //SEG42 [19] call print_word param-assignment [ mul_tables_compare::kc_sqr#2 char_cursor#10 ] ( main:2::mul_tables_compare:9 [ mul_tables_compare::kc_sqr#2 char_cursor#10 ] ) - //SEG43 [29] phi from mul_tables_compare::@7 to print_word [phi:mul_tables_compare::@7->print_word] - print_word_from_b7: - //SEG44 [29] phi (word) print_word::w#2 = (word) print_word::w#0 [phi:mul_tables_compare::@7->print_word#0] -- register_copy + //SEG196 [96] call print_word param-assignment [ char_cursor#11 mul_tables_compare::kc_sqr#2 ] ( main:2::mul_tables_compare:11 [ char_cursor#11 mul_tables_compare::kc_sqr#2 ] ) + //SEG197 [60] phi from mul_tables_compare::@6 to print_word [phi:mul_tables_compare::@6->print_word] + print_word_from_b6: + //SEG198 [60] phi (word) print_word::w#4 = (word) print_word::w#0 [phi:mul_tables_compare::@6->print_word#0] -- register_copy jsr print_word - //SEG45 [20] phi from mul_tables_compare::@7 to mul_tables_compare::@8 [phi:mul_tables_compare::@7->mul_tables_compare::@8] - b8_from_b7: - jmp b8 - //SEG46 mul_tables_compare::@8 - b8: - //SEG47 [21] call print_str param-assignment [ mul_tables_compare::kc_sqr#2 char_cursor#19 ] ( main:2::mul_tables_compare:9 [ mul_tables_compare::kc_sqr#2 char_cursor#19 ] ) - //SEG48 [47] phi from mul_tables_compare::@8 to print_str [phi:mul_tables_compare::@8->print_str] - print_str_from_b8: - //SEG49 [47] phi (byte*) char_cursor#44 = (byte*) char_cursor#10 [phi:mul_tables_compare::@8->print_str#0] -- register_copy - //SEG50 [47] phi (byte*) print_str::str#5 = (const string) mul_tables_compare::str1 [phi:mul_tables_compare::@8->print_str#1] -- pbuz1=pbuc1 + //SEG199 [97] phi from mul_tables_compare::@6 to mul_tables_compare::@7 [phi:mul_tables_compare::@6->mul_tables_compare::@7] + b7_from_b6: + jmp b7 + //SEG200 mul_tables_compare::@7 + b7: + //SEG201 [98] call print_str param-assignment [ char_cursor#2 mul_tables_compare::kc_sqr#2 ] ( main:2::mul_tables_compare:11 [ char_cursor#2 mul_tables_compare::kc_sqr#2 ] ) + //SEG202 [53] phi from mul_tables_compare::@7 to print_str [phi:mul_tables_compare::@7->print_str] + print_str_from_b7: + //SEG203 [53] phi (byte*) char_cursor#71 = (byte*) char_cursor#11 [phi:mul_tables_compare::@7->print_str#0] -- register_copy + //SEG204 [53] phi (byte*) print_str::str#9 = (const string) mul_tables_compare::str1 [phi:mul_tables_compare::@7->print_str#1] -- pbuz1=pbuc1 lda #str1 sta print_str.str+1 jsr print_str - jmp b9 - //SEG51 mul_tables_compare::@9 - b9: - //SEG52 [22] (word) print_word::w#1 ← ((word)) (byte*) mul_tables_compare::kc_sqr#2 [ print_word::w#1 char_cursor#19 ] ( main:2::mul_tables_compare:9 [ print_word::w#1 char_cursor#19 ] ) -- vwuz1=_word_pbuz2 + jmp b8 + //SEG205 mul_tables_compare::@8 + b8: + //SEG206 [99] (word) print_word::w#1 ← ((word)) (byte*) mul_tables_compare::kc_sqr#2 [ char_cursor#2 print_word::w#1 ] ( main:2::mul_tables_compare:11 [ char_cursor#2 print_word::w#1 ] ) -- vwuz1=_word_pbuz2 lda kc_sqr sta print_word.w lda kc_sqr+1 sta print_word.w+1 - //SEG53 [23] call print_word param-assignment [ char_cursor#10 ] ( main:2::mul_tables_compare:9 [ char_cursor#10 ] ) - //SEG54 [29] phi from mul_tables_compare::@9 to print_word [phi:mul_tables_compare::@9->print_word] - print_word_from_b9: - //SEG55 [29] phi (word) print_word::w#2 = (word) print_word::w#1 [phi:mul_tables_compare::@9->print_word#0] -- register_copy + //SEG207 [100] call print_word param-assignment [ char_cursor#11 ] ( main:2::mul_tables_compare:11 [ char_cursor#11 ] ) + //SEG208 [60] phi from mul_tables_compare::@8 to print_word [phi:mul_tables_compare::@8->print_word] + print_word_from_b8: + //SEG209 [60] phi (word) print_word::w#4 = (word) print_word::w#1 [phi:mul_tables_compare::@8->print_word#0] -- register_copy jsr print_word - //SEG56 [24] phi from mul_tables_compare::@9 to mul_tables_compare::@return [phi:mul_tables_compare::@9->mul_tables_compare::@return] - breturn_from_b9: - //SEG57 [24] phi (byte*) char_cursor#17 = (byte*) char_cursor#10 [phi:mul_tables_compare::@9->mul_tables_compare::@return#0] -- register_copy + //SEG210 [101] phi from mul_tables_compare::@8 to mul_tables_compare::@return [phi:mul_tables_compare::@8->mul_tables_compare::@return] + breturn_from_b8: + //SEG211 [101] phi (byte*) line_cursor#17 = ((byte*))(word/signed word) 1024 [phi:mul_tables_compare::@8->mul_tables_compare::@return#0] -- pbuz1=pbuc1 + lda #<$400 + sta line_cursor + lda #>$400 + sta line_cursor+1 + //SEG212 [101] phi (byte*) char_cursor#20 = (byte*) char_cursor#11 [phi:mul_tables_compare::@8->mul_tables_compare::@return#1] -- register_copy jmp breturn - //SEG58 mul_tables_compare::@return + //SEG213 mul_tables_compare::@return breturn: - //SEG59 [25] return [ ] ( main:2::mul_tables_compare:9 [ ] ) + //SEG214 [102] return [ line_cursor#17 char_cursor#20 ] ( main:2::mul_tables_compare:11 [ line_cursor#17 char_cursor#20 ] ) rts - //SEG60 mul_tables_compare::@2 + //SEG215 mul_tables_compare::@2 b2: - //SEG61 [26] (byte*) mul_tables_compare::asm_sqr#1 ← ++ (byte*) mul_tables_compare::asm_sqr#2 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#1 ] ( main:2::mul_tables_compare:9 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#1 ] ) -- pbuz1=_inc_pbuz1 + //SEG216 [103] (byte*) mul_tables_compare::asm_sqr#1 ← ++ (byte*) mul_tables_compare::asm_sqr#2 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#1 ] ( main:2::mul_tables_compare:11 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#1 ] ) -- pbuz1=_inc_pbuz1 inc asm_sqr bne !+ inc asm_sqr+1 !: - //SEG62 [27] (byte*) mul_tables_compare::kc_sqr#1 ← ++ (byte*) mul_tables_compare::kc_sqr#2 [ mul_tables_compare::kc_sqr#1 mul_tables_compare::asm_sqr#1 ] ( main:2::mul_tables_compare:9 [ mul_tables_compare::kc_sqr#1 mul_tables_compare::asm_sqr#1 ] ) -- pbuz1=_inc_pbuz1 + //SEG217 [104] (byte*) mul_tables_compare::kc_sqr#1 ← ++ (byte*) mul_tables_compare::kc_sqr#2 [ mul_tables_compare::kc_sqr#1 mul_tables_compare::asm_sqr#1 ] ( main:2::mul_tables_compare:11 [ mul_tables_compare::kc_sqr#1 mul_tables_compare::asm_sqr#1 ] ) -- pbuz1=_inc_pbuz1 inc kc_sqr bne !+ inc kc_sqr+1 !: - //SEG63 [28] if((byte*) mul_tables_compare::kc_sqr#1<(const byte[512]) mul_sqr1_lo#0+(word/signed word) 512*(byte/signed byte/word/signed word) 4) goto mul_tables_compare::@1 [ mul_tables_compare::kc_sqr#1 mul_tables_compare::asm_sqr#1 ] ( main:2::mul_tables_compare:9 [ mul_tables_compare::kc_sqr#1 mul_tables_compare::asm_sqr#1 ] ) -- pbuz1_lt_pbuc1_then_la1 + //SEG218 [105] if((byte*) mul_tables_compare::kc_sqr#1<(const byte[512]) mul_sqr1_lo#0+(word/signed word) 512*(byte/signed byte/word/signed word) 4) goto mul_tables_compare::@1 [ mul_tables_compare::kc_sqr#1 mul_tables_compare::asm_sqr#1 ] ( main:2::mul_tables_compare:11 [ mul_tables_compare::kc_sqr#1 mul_tables_compare::asm_sqr#1 ] ) -- pbuz1_lt_pbuc1_then_la1 lda kc_sqr+1 cmp #>mul_sqr1_lo+$200*4 bcc b1_from_b2 @@ -2408,194 +4279,57 @@ mul_tables_compare: { cmp #mul_tables_compare::@return] - breturn_from_b2: - //SEG65 [24] phi (byte*) char_cursor#17 = ((byte*))(word/signed word) 1024 [phi:mul_tables_compare::@2->mul_tables_compare::@return#0] -- pbuz1=pbuc1 + //SEG219 [106] phi from mul_tables_compare::@2 to mul_tables_compare::@5 [phi:mul_tables_compare::@2->mul_tables_compare::@5] + b5_from_b2: + jmp b5 + //SEG220 mul_tables_compare::@5 + b5: + //SEG221 [107] call print_str param-assignment [ char_cursor#2 ] ( main:2::mul_tables_compare:11 [ char_cursor#2 ] ) + //SEG222 [53] phi from mul_tables_compare::@5 to print_str [phi:mul_tables_compare::@5->print_str] + print_str_from_b5: + //SEG223 [53] phi (byte*) char_cursor#71 = ((byte*))(word/signed word) 1024 [phi:mul_tables_compare::@5->print_str#0] -- pbuz1=pbuc1 lda #<$400 sta char_cursor lda #>$400 sta char_cursor+1 - jmp breturn - str: .text "mul table mismatch at @" - str1: .text " / @" -} -//SEG66 print_word -print_word: { - .label w = 6 - //SEG67 [30] (byte) print_byte::b#0 ← > (word) print_word::w#2 [ print_word::w#2 print_byte::b#0 char_cursor#19 ] ( main:2::mul_tables_compare:9::print_word:19 [ mul_tables_compare::kc_sqr#2 print_word::w#2 print_byte::b#0 char_cursor#19 ] main:2::mul_tables_compare:9::print_word:23 [ print_word::w#2 print_byte::b#0 char_cursor#19 ] ) -- vbuz1=_hi_vwuz2 - lda w+1 - sta print_byte.b - //SEG68 [31] call print_byte param-assignment [ char_cursor#10 print_word::w#2 ] ( main:2::mul_tables_compare:9::print_word:19 [ mul_tables_compare::kc_sqr#2 char_cursor#10 print_word::w#2 ] main:2::mul_tables_compare:9::print_word:23 [ char_cursor#10 print_word::w#2 ] ) - //SEG69 [35] phi from print_word to print_byte [phi:print_word->print_byte] - print_byte_from_print_word: - //SEG70 [35] phi (byte*) char_cursor#39 = (byte*) char_cursor#19 [phi:print_word->print_byte#0] -- register_copy - //SEG71 [35] phi (byte) print_byte::b#2 = (byte) print_byte::b#0 [phi:print_word->print_byte#1] -- register_copy - jsr print_byte - jmp b1 - //SEG72 print_word::@1 - b1: - //SEG73 [32] (byte) print_byte::b#1 ← < (word) print_word::w#2 [ char_cursor#10 print_byte::b#1 ] ( main:2::mul_tables_compare:9::print_word:19 [ mul_tables_compare::kc_sqr#2 char_cursor#10 print_byte::b#1 ] main:2::mul_tables_compare:9::print_word:23 [ char_cursor#10 print_byte::b#1 ] ) -- vbuz1=_lo_vwuz2 - lda w - sta print_byte.b - //SEG74 [33] call print_byte param-assignment [ char_cursor#10 ] ( main:2::mul_tables_compare:9::print_word:19 [ mul_tables_compare::kc_sqr#2 char_cursor#10 ] main:2::mul_tables_compare:9::print_word:23 [ char_cursor#10 ] ) - //SEG75 [35] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] - print_byte_from_b1: - //SEG76 [35] phi (byte*) char_cursor#39 = (byte*) char_cursor#10 [phi:print_word::@1->print_byte#0] -- register_copy - //SEG77 [35] phi (byte) print_byte::b#2 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#1] -- register_copy - jsr print_byte - jmp breturn - //SEG78 print_word::@return - breturn: - //SEG79 [34] return [ char_cursor#10 ] ( main:2::mul_tables_compare:9::print_word:19 [ mul_tables_compare::kc_sqr#2 char_cursor#10 ] main:2::mul_tables_compare:9::print_word:23 [ char_cursor#10 ] ) - rts -} -//SEG80 print_byte -print_byte: { - .label _0 = $1e - .label _2 = $1f - .label b = 8 - //SEG81 [36] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word) 4 [ print_byte::b#2 char_cursor#39 print_byte::$0 ] ( main:2::mul_tables_compare:9::print_word:19::print_byte:31 [ mul_tables_compare::kc_sqr#2 print_word::w#2 print_byte::b#2 char_cursor#39 print_byte::$0 ] main:2::mul_tables_compare:9::print_word:23::print_byte:31 [ print_word::w#2 print_byte::b#2 char_cursor#39 print_byte::$0 ] main:2::mul_tables_compare:9::print_word:19::print_byte:33 [ mul_tables_compare::kc_sqr#2 print_byte::b#2 char_cursor#39 print_byte::$0 ] main:2::mul_tables_compare:9::print_word:23::print_byte:33 [ print_byte::b#2 char_cursor#39 print_byte::$0 ] ) -- vbuz1=vbuz2_ror_4 - lda b - lsr - lsr - lsr - lsr - sta _0 - //SEG82 [37] (byte) print_char::ch#0 ← *((const byte[]) print_byte::hextab#0 + (byte~) print_byte::$0) [ print_byte::b#2 char_cursor#39 print_char::ch#0 ] ( main:2::mul_tables_compare:9::print_word:19::print_byte:31 [ mul_tables_compare::kc_sqr#2 print_word::w#2 print_byte::b#2 char_cursor#39 print_char::ch#0 ] main:2::mul_tables_compare:9::print_word:23::print_byte:31 [ print_word::w#2 print_byte::b#2 char_cursor#39 print_char::ch#0 ] main:2::mul_tables_compare:9::print_word:19::print_byte:33 [ mul_tables_compare::kc_sqr#2 print_byte::b#2 char_cursor#39 print_char::ch#0 ] main:2::mul_tables_compare:9::print_word:23::print_byte:33 [ print_byte::b#2 char_cursor#39 print_char::ch#0 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 - ldx _0 - lda hextab,x - sta print_char.ch - //SEG83 [38] call print_char param-assignment [ char_cursor#10 print_byte::b#2 ] ( main:2::mul_tables_compare:9::print_word:19::print_byte:31 [ mul_tables_compare::kc_sqr#2 print_word::w#2 char_cursor#10 print_byte::b#2 ] main:2::mul_tables_compare:9::print_word:23::print_byte:31 [ print_word::w#2 char_cursor#10 print_byte::b#2 ] main:2::mul_tables_compare:9::print_word:19::print_byte:33 [ mul_tables_compare::kc_sqr#2 char_cursor#10 print_byte::b#2 ] main:2::mul_tables_compare:9::print_word:23::print_byte:33 [ char_cursor#10 print_byte::b#2 ] ) - //SEG84 [43] phi from print_byte to print_char [phi:print_byte->print_char] - print_char_from_print_byte: - //SEG85 [43] phi (byte*) char_cursor#27 = (byte*) char_cursor#39 [phi:print_byte->print_char#0] -- register_copy - //SEG86 [43] phi (byte) print_char::ch#2 = (byte) print_char::ch#0 [phi:print_byte->print_char#1] -- register_copy - jsr print_char - jmp b1 - //SEG87 print_byte::@1 - b1: - //SEG88 [39] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word) 15 [ char_cursor#10 print_byte::$2 ] ( main:2::mul_tables_compare:9::print_word:19::print_byte:31 [ mul_tables_compare::kc_sqr#2 print_word::w#2 char_cursor#10 print_byte::$2 ] main:2::mul_tables_compare:9::print_word:23::print_byte:31 [ print_word::w#2 char_cursor#10 print_byte::$2 ] main:2::mul_tables_compare:9::print_word:19::print_byte:33 [ mul_tables_compare::kc_sqr#2 char_cursor#10 print_byte::$2 ] main:2::mul_tables_compare:9::print_word:23::print_byte:33 [ char_cursor#10 print_byte::$2 ] ) -- vbuz1=vbuz2_band_vbuc1 - lda b - and #$f - sta _2 - //SEG89 [40] (byte) print_char::ch#1 ← *((const byte[]) print_byte::hextab#0 + (byte~) print_byte::$2) [ char_cursor#10 print_char::ch#1 ] ( main:2::mul_tables_compare:9::print_word:19::print_byte:31 [ mul_tables_compare::kc_sqr#2 print_word::w#2 char_cursor#10 print_char::ch#1 ] main:2::mul_tables_compare:9::print_word:23::print_byte:31 [ print_word::w#2 char_cursor#10 print_char::ch#1 ] main:2::mul_tables_compare:9::print_word:19::print_byte:33 [ mul_tables_compare::kc_sqr#2 char_cursor#10 print_char::ch#1 ] main:2::mul_tables_compare:9::print_word:23::print_byte:33 [ char_cursor#10 print_char::ch#1 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 - ldx _2 - lda hextab,x - sta print_char.ch - //SEG90 [41] call print_char param-assignment [ char_cursor#10 ] ( main:2::mul_tables_compare:9::print_word:19::print_byte:31 [ mul_tables_compare::kc_sqr#2 print_word::w#2 char_cursor#10 ] main:2::mul_tables_compare:9::print_word:23::print_byte:31 [ print_word::w#2 char_cursor#10 ] main:2::mul_tables_compare:9::print_word:19::print_byte:33 [ mul_tables_compare::kc_sqr#2 char_cursor#10 ] main:2::mul_tables_compare:9::print_word:23::print_byte:33 [ char_cursor#10 ] ) - //SEG91 [43] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] - print_char_from_b1: - //SEG92 [43] phi (byte*) char_cursor#27 = (byte*) char_cursor#10 [phi:print_byte::@1->print_char#0] -- register_copy - //SEG93 [43] phi (byte) print_char::ch#2 = (byte) print_char::ch#1 [phi:print_byte::@1->print_char#1] -- register_copy - jsr print_char - jmp breturn - //SEG94 print_byte::@return - breturn: - //SEG95 [42] return [ char_cursor#10 ] ( main:2::mul_tables_compare:9::print_word:19::print_byte:31 [ mul_tables_compare::kc_sqr#2 print_word::w#2 char_cursor#10 ] main:2::mul_tables_compare:9::print_word:23::print_byte:31 [ print_word::w#2 char_cursor#10 ] main:2::mul_tables_compare:9::print_word:19::print_byte:33 [ mul_tables_compare::kc_sqr#2 char_cursor#10 ] main:2::mul_tables_compare:9::print_word:23::print_byte:33 [ char_cursor#10 ] ) - rts - hextab: .byte '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' -} -//SEG96 print_char -print_char: { - .label ch = 9 - //SEG97 [44] *((byte*) char_cursor#27) ← (byte) print_char::ch#2 [ char_cursor#27 ] ( main:2::mul_tables_compare:9::print_word:19::print_byte:31::print_char:38 [ mul_tables_compare::kc_sqr#2 print_word::w#2 print_byte::b#2 char_cursor#27 ] main:2::mul_tables_compare:9::print_word:23::print_byte:31::print_char:38 [ print_word::w#2 print_byte::b#2 char_cursor#27 ] main:2::mul_tables_compare:9::print_word:19::print_byte:33::print_char:38 [ mul_tables_compare::kc_sqr#2 print_byte::b#2 char_cursor#27 ] main:2::mul_tables_compare:9::print_word:23::print_byte:33::print_char:38 [ print_byte::b#2 char_cursor#27 ] main:2::mul_tables_compare:9::print_word:19::print_byte:31::print_char:41 [ mul_tables_compare::kc_sqr#2 print_word::w#2 char_cursor#27 ] main:2::mul_tables_compare:9::print_word:23::print_byte:31::print_char:41 [ print_word::w#2 char_cursor#27 ] main:2::mul_tables_compare:9::print_word:19::print_byte:33::print_char:41 [ mul_tables_compare::kc_sqr#2 char_cursor#27 ] main:2::mul_tables_compare:9::print_word:23::print_byte:33::print_char:41 [ char_cursor#27 ] ) -- _deref_pbuz1=vbuz2 - ldy #0 - lda ch - sta (char_cursor),y - //SEG98 [45] (byte*) char_cursor#10 ← ++ (byte*) char_cursor#27 [ char_cursor#10 ] ( main:2::mul_tables_compare:9::print_word:19::print_byte:31::print_char:38 [ mul_tables_compare::kc_sqr#2 print_word::w#2 print_byte::b#2 char_cursor#10 ] main:2::mul_tables_compare:9::print_word:23::print_byte:31::print_char:38 [ print_word::w#2 print_byte::b#2 char_cursor#10 ] main:2::mul_tables_compare:9::print_word:19::print_byte:33::print_char:38 [ mul_tables_compare::kc_sqr#2 print_byte::b#2 char_cursor#10 ] main:2::mul_tables_compare:9::print_word:23::print_byte:33::print_char:38 [ print_byte::b#2 char_cursor#10 ] main:2::mul_tables_compare:9::print_word:19::print_byte:31::print_char:41 [ mul_tables_compare::kc_sqr#2 print_word::w#2 char_cursor#10 ] main:2::mul_tables_compare:9::print_word:23::print_byte:31::print_char:41 [ print_word::w#2 char_cursor#10 ] main:2::mul_tables_compare:9::print_word:19::print_byte:33::print_char:41 [ mul_tables_compare::kc_sqr#2 char_cursor#10 ] main:2::mul_tables_compare:9::print_word:23::print_byte:33::print_char:41 [ char_cursor#10 ] ) -- pbuz1=_inc_pbuz1 - inc char_cursor - bne !+ - inc char_cursor+1 - !: - jmp breturn - //SEG99 print_char::@return - breturn: - //SEG100 [46] return [ char_cursor#10 ] ( main:2::mul_tables_compare:9::print_word:19::print_byte:31::print_char:38 [ mul_tables_compare::kc_sqr#2 print_word::w#2 print_byte::b#2 char_cursor#10 ] main:2::mul_tables_compare:9::print_word:23::print_byte:31::print_char:38 [ print_word::w#2 print_byte::b#2 char_cursor#10 ] main:2::mul_tables_compare:9::print_word:19::print_byte:33::print_char:38 [ mul_tables_compare::kc_sqr#2 print_byte::b#2 char_cursor#10 ] main:2::mul_tables_compare:9::print_word:23::print_byte:33::print_char:38 [ print_byte::b#2 char_cursor#10 ] main:2::mul_tables_compare:9::print_word:19::print_byte:31::print_char:41 [ mul_tables_compare::kc_sqr#2 print_word::w#2 char_cursor#10 ] main:2::mul_tables_compare:9::print_word:23::print_byte:31::print_char:41 [ print_word::w#2 char_cursor#10 ] main:2::mul_tables_compare:9::print_word:19::print_byte:33::print_char:41 [ mul_tables_compare::kc_sqr#2 char_cursor#10 ] main:2::mul_tables_compare:9::print_word:23::print_byte:33::print_char:41 [ char_cursor#10 ] ) - rts -} -//SEG101 print_str -print_str: { - .label str = $c - //SEG102 [48] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] - b1_from_print_str: - b1_from_b2: - //SEG103 [48] phi (byte*) char_cursor#19 = (byte*) char_cursor#44 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy - //SEG104 [48] phi (byte*) print_str::str#3 = (byte*) print_str::str#5 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy - jmp b1 - //SEG105 print_str::@1 - b1: - //SEG106 [49] if(*((byte*) print_str::str#3)!=(byte) '@') goto print_str::@2 [ char_cursor#19 print_str::str#3 ] ( main:2::mul_tables_compare:9::print_str:17 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 char_cursor#19 print_str::str#3 ] main:2::mul_tables_compare:9::print_str:21 [ mul_tables_compare::kc_sqr#2 char_cursor#19 print_str::str#3 ] ) -- _deref_pbuz1_neq_vbuc1_then_la1 - ldy #0 - lda (str),y - cmp #'@' - bne b2 - jmp breturn - //SEG107 print_str::@return - breturn: - //SEG108 [50] return [ char_cursor#19 ] ( main:2::mul_tables_compare:9::print_str:17 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 char_cursor#19 ] main:2::mul_tables_compare:9::print_str:21 [ mul_tables_compare::kc_sqr#2 char_cursor#19 ] ) - rts - //SEG109 print_str::@2 - b2: - //SEG110 [51] *((byte*) char_cursor#19) ← *((byte*) print_str::str#3) [ char_cursor#19 print_str::str#3 ] ( main:2::mul_tables_compare:9::print_str:17 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 char_cursor#19 print_str::str#3 ] main:2::mul_tables_compare:9::print_str:21 [ mul_tables_compare::kc_sqr#2 char_cursor#19 print_str::str#3 ] ) -- _deref_pbuz1=_deref_pbuz2 - ldy #0 - lda (str),y - ldy #0 - sta (char_cursor),y - //SEG111 [52] (byte*) char_cursor#1 ← ++ (byte*) char_cursor#19 [ print_str::str#3 char_cursor#1 ] ( main:2::mul_tables_compare:9::print_str:17 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 print_str::str#3 char_cursor#1 ] main:2::mul_tables_compare:9::print_str:21 [ mul_tables_compare::kc_sqr#2 print_str::str#3 char_cursor#1 ] ) -- pbuz1=_inc_pbuz1 - inc char_cursor - bne !+ - inc char_cursor+1 - !: - //SEG112 [53] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#3 [ print_str::str#0 char_cursor#1 ] ( main:2::mul_tables_compare:9::print_str:17 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 print_str::str#0 char_cursor#1 ] main:2::mul_tables_compare:9::print_str:21 [ mul_tables_compare::kc_sqr#2 print_str::str#0 char_cursor#1 ] ) -- pbuz1=_inc_pbuz1 - inc str - bne !+ - inc str+1 - !: - jmp b1_from_b2 -} -//SEG113 print_cls -print_cls: { - .label sc = $e - //SEG114 [55] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] - b1_from_print_cls: - //SEG115 [55] phi (byte*) print_cls::sc#2 = ((byte*))(word/signed word) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG224 [53] phi (byte*) print_str::str#9 = (const string) mul_tables_compare::str2 [phi:mul_tables_compare::@5->print_str#1] -- pbuz1=pbuc1 + lda #str2 + sta print_str.str+1 + jsr print_str + //SEG225 [108] phi from mul_tables_compare::@5 to mul_tables_compare::@10 [phi:mul_tables_compare::@5->mul_tables_compare::@10] + b10_from_b5: + jmp b10 + //SEG226 mul_tables_compare::@10 + b10: + //SEG227 [109] call print_ln param-assignment [ line_cursor#1 ] ( main:2::mul_tables_compare:11 [ line_cursor#1 ] ) + //SEG228 [48] phi from mul_tables_compare::@10 to print_ln [phi:mul_tables_compare::@10->print_ln] + print_ln_from_b10: + //SEG229 [48] phi (byte*) line_cursor#22 = ((byte*))(word/signed word) 1024 [phi:mul_tables_compare::@10->print_ln#0] -- pbuz1=pbuc1 lda #<$400 - sta sc + sta line_cursor lda #>$400 - sta sc+1 - jmp b1 - //SEG116 [55] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] - b1_from_b1: - //SEG117 [55] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy - jmp b1 - //SEG118 print_cls::@1 - b1: - //SEG119 [56] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::mul_tables_compare:9::print_cls:15 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 print_cls::sc#2 ] ) -- _deref_pbuz1=vbuc1 - ldy #0 - lda #' ' - sta (sc),y - //SEG120 [57] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 [ print_cls::sc#1 ] ( main:2::mul_tables_compare:9::print_cls:15 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 print_cls::sc#1 ] ) -- pbuz1=_inc_pbuz1 - inc sc - bne !+ - inc sc+1 - !: - //SEG121 [58] if((byte*) print_cls::sc#1!=(word/signed word) 1024+(word/signed word) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::mul_tables_compare:9::print_cls:15 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 print_cls::sc#1 ] ) -- pbuz1_neq_vwuc1_then_la1 - lda sc+1 - cmp #>$400+$3e8 - bne b1_from_b1 - lda sc - cmp #<$400+$3e8 - bne b1_from_b1 + sta line_cursor+1 + jsr print_ln + //SEG230 [110] (byte*~) char_cursor#100 ← (byte*) line_cursor#1 [ line_cursor#1 char_cursor#100 ] ( main:2::mul_tables_compare:11 [ line_cursor#1 char_cursor#100 ] ) -- pbuz1=pbuz2 + lda line_cursor + sta char_cursor + lda line_cursor+1 + sta char_cursor+1 + //SEG231 [101] phi from mul_tables_compare::@10 to mul_tables_compare::@return [phi:mul_tables_compare::@10->mul_tables_compare::@return] + breturn_from_b10: + //SEG232 [101] phi (byte*) line_cursor#17 = (byte*) line_cursor#1 [phi:mul_tables_compare::@10->mul_tables_compare::@return#0] -- register_copy + //SEG233 [101] phi (byte*) char_cursor#20 = (byte*~) char_cursor#100 [phi:mul_tables_compare::@10->mul_tables_compare::@return#1] -- register_copy jmp breturn - //SEG122 print_cls::@return - breturn: - //SEG123 [59] return [ ] ( main:2::mul_tables_compare:9::print_cls:15 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 ] ) - rts + str: .text "multiply table mismatch at @" + str1: .text " / @" + str2: .text "multiply tables match!@" } -//SEG124 init_mul_tables_asm +//SEG234 init_mul_tables_asm init_mul_tables_asm: { .const mem = $ff - //SEG125 asm { ldx#$00txa.byte$c9lb1:tyaadc#$00ml1:staasm_mul_sqr1_hi,xtaycmp#$40txarorml9:adc#$00staml9+1inxml0:staasm_mul_sqr1_lo,xbnelb1incml0+2incml1+2clcinybnelb1ldx#$00ldy#$ff!:ldaasm_mul_sqr1_hi+1,xstaasm_mul_sqr2_hi+$100,xldaasm_mul_sqr1_hi,xstaasm_mul_sqr2_hi,yldaasm_mul_sqr1_lo+1,xstaasm_mul_sqr2_lo+$100,xldaasm_mul_sqr1_lo,xstaasm_mul_sqr2_lo,ydeyinxbne!- } + //SEG235 asm { ldx#$00txa.byte$c9lb1:tyaadc#$00ml1:staasm_mul_sqr1_hi,xtaycmp#$40txarorml9:adc#$00staml9+1inxml0:staasm_mul_sqr1_lo,xbnelb1incml0+2incml1+2clcinybnelb1ldx#$00ldy#$ff!:ldaasm_mul_sqr1_hi+1,xstaasm_mul_sqr2_hi+$100,xldaasm_mul_sqr1_hi,xstaasm_mul_sqr2_hi,yldaasm_mul_sqr1_lo+1,xstaasm_mul_sqr2_lo+$100,xldaasm_mul_sqr1_lo,xstaasm_mul_sqr2_lo,ydeyinxbne!- } ldx #0 txa .byte $c9 @@ -2634,119 +4368,119 @@ init_mul_tables_asm: { dey inx bne !- - //SEG126 [61] *((const byte*) init_mul_tables_asm::mem#0) ← *((const byte[512]) asm_mul_sqr1_lo#0) [ ] ( main:2::init_mul_tables_asm:7 [ ] ) -- _deref_pbuc1=_deref_pbuc2 + //SEG236 [112] *((const byte*) init_mul_tables_asm::mem#0) ← *((const byte[512]) asm_mul_sqr1_lo#0) [ ] ( main:2::init_mul_tables_asm:9 [ ] ) -- _deref_pbuc1=_deref_pbuc2 lda asm_mul_sqr1_lo sta mem - //SEG127 [62] *((const byte*) init_mul_tables_asm::mem#0) ← *((const byte[512]) asm_mul_sqr1_hi#0) [ ] ( main:2::init_mul_tables_asm:7 [ ] ) -- _deref_pbuc1=_deref_pbuc2 + //SEG237 [113] *((const byte*) init_mul_tables_asm::mem#0) ← *((const byte[512]) asm_mul_sqr1_hi#0) [ ] ( main:2::init_mul_tables_asm:9 [ ] ) -- _deref_pbuc1=_deref_pbuc2 lda asm_mul_sqr1_hi sta mem - //SEG128 [63] *((const byte*) init_mul_tables_asm::mem#0) ← *((const byte[512]) asm_mul_sqr2_lo#0) [ ] ( main:2::init_mul_tables_asm:7 [ ] ) -- _deref_pbuc1=_deref_pbuc2 + //SEG238 [114] *((const byte*) init_mul_tables_asm::mem#0) ← *((const byte[512]) asm_mul_sqr2_lo#0) [ ] ( main:2::init_mul_tables_asm:9 [ ] ) -- _deref_pbuc1=_deref_pbuc2 lda asm_mul_sqr2_lo sta mem - //SEG129 [64] *((const byte*) init_mul_tables_asm::mem#0) ← *((const byte[512]) asm_mul_sqr2_hi#0) [ ] ( main:2::init_mul_tables_asm:7 [ ] ) -- _deref_pbuc1=_deref_pbuc2 + //SEG239 [115] *((const byte*) init_mul_tables_asm::mem#0) ← *((const byte[512]) asm_mul_sqr2_hi#0) [ ] ( main:2::init_mul_tables_asm:9 [ ] ) -- _deref_pbuc1=_deref_pbuc2 lda asm_mul_sqr2_hi sta mem jmp breturn - //SEG130 init_mul_tables_asm::@return + //SEG240 init_mul_tables_asm::@return breturn: - //SEG131 [65] return [ ] ( main:2::init_mul_tables_asm:7 [ ] ) + //SEG241 [116] return [ ] ( main:2::init_mul_tables_asm:9 [ ] ) rts } -//SEG132 init_mul_tables +//SEG242 init_mul_tables init_mul_tables: { - .label _2 = $20 - .label _5 = $21 - .label _6 = $22 - .label c = $10 - .label sqr1_hi = $13 - .label sqr = $16 - .label sqr1_lo = $11 - .label x_2 = $15 - .label sqr2_hi = $1b - .label x_255 = $18 - .label sqr2_lo = $19 - .label dir = $1d - //SEG133 [67] phi from init_mul_tables to init_mul_tables::@1 [phi:init_mul_tables->init_mul_tables::@1] + .label _2 = $35 + .label _5 = $36 + .label _6 = $37 + .label c = $15 + .label sqr1_hi = $18 + .label sqr = $1b + .label sqr1_lo = $16 + .label x_2 = $1a + .label sqr2_hi = $20 + .label x_255 = $1d + .label sqr2_lo = $1e + .label dir = $22 + //SEG243 [118] phi from init_mul_tables to init_mul_tables::@1 [phi:init_mul_tables->init_mul_tables::@1] b1_from_init_mul_tables: - //SEG134 [67] phi (byte) init_mul_tables::x_2#3 = (byte/signed byte/word/signed word) 0 [phi:init_mul_tables->init_mul_tables::@1#0] -- vbuz1=vbuc1 + //SEG244 [118] phi (byte) init_mul_tables::x_2#3 = (byte/signed byte/word/signed word) 0 [phi:init_mul_tables->init_mul_tables::@1#0] -- vbuz1=vbuc1 lda #0 sta x_2 - //SEG135 [67] phi (byte*) init_mul_tables::sqr1_hi#2 = (const byte[512]) mul_sqr1_hi#0+(byte/signed byte/word/signed word) 1 [phi:init_mul_tables->init_mul_tables::@1#1] -- pbuz1=pbuc1 + //SEG245 [118] phi (byte*) init_mul_tables::sqr1_hi#2 = (const byte[512]) mul_sqr1_hi#0+(byte/signed byte/word/signed word) 1 [phi:init_mul_tables->init_mul_tables::@1#1] -- pbuz1=pbuc1 lda #mul_sqr1_hi+1 sta sqr1_hi+1 - //SEG136 [67] phi (byte*) init_mul_tables::sqr1_lo#2 = (const byte[512]) mul_sqr1_lo#0+(byte/signed byte/word/signed word) 1 [phi:init_mul_tables->init_mul_tables::@1#2] -- pbuz1=pbuc1 + //SEG246 [118] phi (byte*) init_mul_tables::sqr1_lo#2 = (const byte[512]) mul_sqr1_lo#0+(byte/signed byte/word/signed word) 1 [phi:init_mul_tables->init_mul_tables::@1#2] -- pbuz1=pbuc1 lda #mul_sqr1_lo+1 sta sqr1_lo+1 - //SEG137 [67] phi (word) init_mul_tables::sqr#4 = (byte/signed byte/word/signed word) 0 [phi:init_mul_tables->init_mul_tables::@1#3] -- vwuz1=vbuc1 + //SEG247 [118] phi (word) init_mul_tables::sqr#4 = (byte/signed byte/word/signed word) 0 [phi:init_mul_tables->init_mul_tables::@1#3] -- vwuz1=vbuc1 lda #0 sta sqr lda #0 sta sqr+1 - //SEG138 [67] phi (byte) init_mul_tables::c#2 = (byte/signed byte/word/signed word) 0 [phi:init_mul_tables->init_mul_tables::@1#4] -- vbuz1=vbuc1 + //SEG248 [118] phi (byte) init_mul_tables::c#2 = (byte/signed byte/word/signed word) 0 [phi:init_mul_tables->init_mul_tables::@1#4] -- vbuz1=vbuc1 lda #0 sta c jmp b1 - //SEG139 [67] phi from init_mul_tables::@2 to init_mul_tables::@1 [phi:init_mul_tables::@2->init_mul_tables::@1] + //SEG249 [118] phi from init_mul_tables::@2 to init_mul_tables::@1 [phi:init_mul_tables::@2->init_mul_tables::@1] b1_from_b2: - //SEG140 [67] phi (byte) init_mul_tables::x_2#3 = (byte) init_mul_tables::x_2#2 [phi:init_mul_tables::@2->init_mul_tables::@1#0] -- register_copy - //SEG141 [67] phi (byte*) init_mul_tables::sqr1_hi#2 = (byte*) init_mul_tables::sqr1_hi#1 [phi:init_mul_tables::@2->init_mul_tables::@1#1] -- register_copy - //SEG142 [67] phi (byte*) init_mul_tables::sqr1_lo#2 = (byte*) init_mul_tables::sqr1_lo#1 [phi:init_mul_tables::@2->init_mul_tables::@1#2] -- register_copy - //SEG143 [67] phi (word) init_mul_tables::sqr#4 = (word) init_mul_tables::sqr#1 [phi:init_mul_tables::@2->init_mul_tables::@1#3] -- register_copy - //SEG144 [67] phi (byte) init_mul_tables::c#2 = (byte) init_mul_tables::c#1 [phi:init_mul_tables::@2->init_mul_tables::@1#4] -- register_copy + //SEG250 [118] phi (byte) init_mul_tables::x_2#3 = (byte) init_mul_tables::x_2#2 [phi:init_mul_tables::@2->init_mul_tables::@1#0] -- register_copy + //SEG251 [118] phi (byte*) init_mul_tables::sqr1_hi#2 = (byte*) init_mul_tables::sqr1_hi#1 [phi:init_mul_tables::@2->init_mul_tables::@1#1] -- register_copy + //SEG252 [118] phi (byte*) init_mul_tables::sqr1_lo#2 = (byte*) init_mul_tables::sqr1_lo#1 [phi:init_mul_tables::@2->init_mul_tables::@1#2] -- register_copy + //SEG253 [118] phi (word) init_mul_tables::sqr#4 = (word) init_mul_tables::sqr#1 [phi:init_mul_tables::@2->init_mul_tables::@1#3] -- register_copy + //SEG254 [118] phi (byte) init_mul_tables::c#2 = (byte) init_mul_tables::c#1 [phi:init_mul_tables::@2->init_mul_tables::@1#4] -- register_copy jmp b1 - //SEG145 init_mul_tables::@1 + //SEG255 init_mul_tables::@1 b1: - //SEG146 [68] (byte) init_mul_tables::c#1 ← ++ (byte) init_mul_tables::c#2 [ init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::x_2#3 init_mul_tables::c#1 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::x_2#3 init_mul_tables::c#1 ] ) -- vbuz1=_inc_vbuz1 + //SEG256 [119] (byte) init_mul_tables::c#1 ← ++ (byte) init_mul_tables::c#2 [ init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::x_2#3 init_mul_tables::c#1 ] ( main:2::init_mul_tables:7 [ init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::x_2#3 init_mul_tables::c#1 ] ) -- vbuz1=_inc_vbuz1 inc c - //SEG147 [69] (byte~) init_mul_tables::$2 ← (byte) init_mul_tables::c#1 & (byte/signed byte/word/signed word) 1 [ init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::x_2#3 init_mul_tables::c#1 init_mul_tables::$2 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::x_2#3 init_mul_tables::c#1 init_mul_tables::$2 ] ) -- vbuz1=vbuz2_band_vbuc1 + //SEG257 [120] (byte~) init_mul_tables::$2 ← (byte) init_mul_tables::c#1 & (byte/signed byte/word/signed word) 1 [ init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::x_2#3 init_mul_tables::c#1 init_mul_tables::$2 ] ( main:2::init_mul_tables:7 [ init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::x_2#3 init_mul_tables::c#1 init_mul_tables::$2 ] ) -- vbuz1=vbuz2_band_vbuc1 lda c and #1 sta _2 - //SEG148 [70] if((byte~) init_mul_tables::$2!=(byte/signed byte/word/signed word) 0) goto init_mul_tables::@2 [ init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::x_2#3 init_mul_tables::c#1 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::x_2#3 init_mul_tables::c#1 ] ) -- vbuz1_neq_0_then_la1 + //SEG258 [121] if((byte~) init_mul_tables::$2!=(byte/signed byte/word/signed word) 0) goto init_mul_tables::@2 [ init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::x_2#3 init_mul_tables::c#1 ] ( main:2::init_mul_tables:7 [ init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::x_2#3 init_mul_tables::c#1 ] ) -- vbuz1_neq_0_then_la1 lda _2 bne b2_from_b1 jmp b5 - //SEG149 init_mul_tables::@5 + //SEG259 init_mul_tables::@5 b5: - //SEG150 [71] (byte) init_mul_tables::x_2#1 ← ++ (byte) init_mul_tables::x_2#3 [ init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#1 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#1 ] ) -- vbuz1=_inc_vbuz1 + //SEG260 [122] (byte) init_mul_tables::x_2#1 ← ++ (byte) init_mul_tables::x_2#3 [ init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#1 ] ( main:2::init_mul_tables:7 [ init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#1 ] ) -- vbuz1=_inc_vbuz1 inc x_2 - //SEG151 [72] (word) init_mul_tables::sqr#2 ← ++ (word) init_mul_tables::sqr#4 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#1 init_mul_tables::sqr#2 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#1 init_mul_tables::sqr#2 ] ) -- vwuz1=_inc_vwuz1 + //SEG261 [123] (word) init_mul_tables::sqr#2 ← ++ (word) init_mul_tables::sqr#4 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#1 init_mul_tables::sqr#2 ] ( main:2::init_mul_tables:7 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#1 init_mul_tables::sqr#2 ] ) -- vwuz1=_inc_vwuz1 inc sqr bne !+ inc sqr+1 !: - //SEG152 [73] phi from init_mul_tables::@1 init_mul_tables::@5 to init_mul_tables::@2 [phi:init_mul_tables::@1/init_mul_tables::@5->init_mul_tables::@2] + //SEG262 [124] phi from init_mul_tables::@1 init_mul_tables::@5 to init_mul_tables::@2 [phi:init_mul_tables::@1/init_mul_tables::@5->init_mul_tables::@2] b2_from_b1: b2_from_b5: - //SEG153 [73] phi (byte) init_mul_tables::x_2#2 = (byte) init_mul_tables::x_2#3 [phi:init_mul_tables::@1/init_mul_tables::@5->init_mul_tables::@2#0] -- register_copy - //SEG154 [73] phi (word) init_mul_tables::sqr#3 = (word) init_mul_tables::sqr#4 [phi:init_mul_tables::@1/init_mul_tables::@5->init_mul_tables::@2#1] -- register_copy + //SEG263 [124] phi (byte) init_mul_tables::x_2#2 = (byte) init_mul_tables::x_2#3 [phi:init_mul_tables::@1/init_mul_tables::@5->init_mul_tables::@2#0] -- register_copy + //SEG264 [124] phi (word) init_mul_tables::sqr#3 = (word) init_mul_tables::sqr#4 [phi:init_mul_tables::@1/init_mul_tables::@5->init_mul_tables::@2#1] -- register_copy jmp b2 - //SEG155 init_mul_tables::@2 + //SEG265 init_mul_tables::@2 b2: - //SEG156 [74] (byte~) init_mul_tables::$5 ← < (word) init_mul_tables::sqr#3 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 init_mul_tables::$5 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 init_mul_tables::$5 ] ) -- vbuz1=_lo_vwuz2 + //SEG266 [125] (byte~) init_mul_tables::$5 ← < (word) init_mul_tables::sqr#3 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 init_mul_tables::$5 ] ( main:2::init_mul_tables:7 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 init_mul_tables::$5 ] ) -- vbuz1=_lo_vwuz2 lda sqr sta _5 - //SEG157 [75] *((byte*) init_mul_tables::sqr1_lo#2) ← (byte~) init_mul_tables::$5 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 ] ) -- _deref_pbuz1=vbuz2 + //SEG267 [126] *((byte*) init_mul_tables::sqr1_lo#2) ← (byte~) init_mul_tables::$5 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 ] ( main:2::init_mul_tables:7 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 ] ) -- _deref_pbuz1=vbuz2 ldy #0 lda _5 sta (sqr1_lo),y - //SEG158 [76] (byte~) init_mul_tables::$6 ← > (word) init_mul_tables::sqr#3 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 init_mul_tables::$6 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 init_mul_tables::$6 ] ) -- vbuz1=_hi_vwuz2 + //SEG268 [127] (byte~) init_mul_tables::$6 ← > (word) init_mul_tables::sqr#3 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 init_mul_tables::$6 ] ( main:2::init_mul_tables:7 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 init_mul_tables::$6 ] ) -- vbuz1=_hi_vwuz2 lda sqr+1 sta _6 - //SEG159 [77] *((byte*) init_mul_tables::sqr1_hi#2) ← (byte~) init_mul_tables::$6 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 ] ) -- _deref_pbuz1=vbuz2 + //SEG269 [128] *((byte*) init_mul_tables::sqr1_hi#2) ← (byte~) init_mul_tables::$6 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 ] ( main:2::init_mul_tables:7 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 ] ) -- _deref_pbuz1=vbuz2 ldy #0 lda _6 sta (sqr1_hi),y - //SEG160 [78] (byte*) init_mul_tables::sqr1_hi#1 ← ++ (byte*) init_mul_tables::sqr1_hi#2 [ init_mul_tables::sqr1_lo#2 init_mul_tables::c#1 init_mul_tables::sqr1_hi#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr1_lo#2 init_mul_tables::c#1 init_mul_tables::sqr1_hi#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 ] ) -- pbuz1=_inc_pbuz1 + //SEG270 [129] (byte*) init_mul_tables::sqr1_hi#1 ← ++ (byte*) init_mul_tables::sqr1_hi#2 [ init_mul_tables::sqr1_lo#2 init_mul_tables::c#1 init_mul_tables::sqr1_hi#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 ] ( main:2::init_mul_tables:7 [ init_mul_tables::sqr1_lo#2 init_mul_tables::c#1 init_mul_tables::sqr1_hi#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 ] ) -- pbuz1=_inc_pbuz1 inc sqr1_hi bne !+ inc sqr1_hi+1 !: - //SEG161 [79] (word) init_mul_tables::sqr#1 ← (word) init_mul_tables::sqr#3 + (byte) init_mul_tables::x_2#2 [ init_mul_tables::sqr1_lo#2 init_mul_tables::c#1 init_mul_tables::sqr#1 init_mul_tables::sqr1_hi#1 init_mul_tables::x_2#2 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr1_lo#2 init_mul_tables::c#1 init_mul_tables::sqr#1 init_mul_tables::sqr1_hi#1 init_mul_tables::x_2#2 ] ) -- vwuz1=vwuz1_plus_vbuz2 + //SEG271 [130] (word) init_mul_tables::sqr#1 ← (word) init_mul_tables::sqr#3 + (byte) init_mul_tables::x_2#2 [ init_mul_tables::sqr1_lo#2 init_mul_tables::c#1 init_mul_tables::sqr#1 init_mul_tables::sqr1_hi#1 init_mul_tables::x_2#2 ] ( main:2::init_mul_tables:7 [ init_mul_tables::sqr1_lo#2 init_mul_tables::c#1 init_mul_tables::sqr#1 init_mul_tables::sqr1_hi#1 init_mul_tables::x_2#2 ] ) -- vwuz1=vwuz1_plus_vbuz2 lda x_2 clc adc sqr @@ -2754,83 +4488,83 @@ init_mul_tables: { bcc !+ inc sqr+1 !: - //SEG162 [80] (byte*) init_mul_tables::sqr1_lo#1 ← ++ (byte*) init_mul_tables::sqr1_lo#2 [ init_mul_tables::c#1 init_mul_tables::sqr#1 init_mul_tables::sqr1_lo#1 init_mul_tables::sqr1_hi#1 init_mul_tables::x_2#2 ] ( main:2::init_mul_tables:5 [ init_mul_tables::c#1 init_mul_tables::sqr#1 init_mul_tables::sqr1_lo#1 init_mul_tables::sqr1_hi#1 init_mul_tables::x_2#2 ] ) -- pbuz1=_inc_pbuz1 + //SEG272 [131] (byte*) init_mul_tables::sqr1_lo#1 ← ++ (byte*) init_mul_tables::sqr1_lo#2 [ init_mul_tables::c#1 init_mul_tables::sqr#1 init_mul_tables::sqr1_lo#1 init_mul_tables::sqr1_hi#1 init_mul_tables::x_2#2 ] ( main:2::init_mul_tables:7 [ init_mul_tables::c#1 init_mul_tables::sqr#1 init_mul_tables::sqr1_lo#1 init_mul_tables::sqr1_hi#1 init_mul_tables::x_2#2 ] ) -- pbuz1=_inc_pbuz1 inc sqr1_lo bne !+ inc sqr1_lo+1 !: - //SEG163 [81] if((byte*) init_mul_tables::sqr1_lo#1!=(const byte[512]) mul_sqr1_lo#0+(word/signed word) 512) goto init_mul_tables::@1 [ init_mul_tables::c#1 init_mul_tables::sqr#1 init_mul_tables::sqr1_lo#1 init_mul_tables::sqr1_hi#1 init_mul_tables::x_2#2 ] ( main:2::init_mul_tables:5 [ init_mul_tables::c#1 init_mul_tables::sqr#1 init_mul_tables::sqr1_lo#1 init_mul_tables::sqr1_hi#1 init_mul_tables::x_2#2 ] ) -- pbuz1_neq_pbuc1_then_la1 + //SEG273 [132] if((byte*) init_mul_tables::sqr1_lo#1!=(const byte[512]) mul_sqr1_lo#0+(word/signed word) 512) goto init_mul_tables::@1 [ init_mul_tables::c#1 init_mul_tables::sqr#1 init_mul_tables::sqr1_lo#1 init_mul_tables::sqr1_hi#1 init_mul_tables::x_2#2 ] ( main:2::init_mul_tables:7 [ init_mul_tables::c#1 init_mul_tables::sqr#1 init_mul_tables::sqr1_lo#1 init_mul_tables::sqr1_hi#1 init_mul_tables::x_2#2 ] ) -- pbuz1_neq_pbuc1_then_la1 lda sqr1_lo+1 cmp #>mul_sqr1_lo+$200 bne b1_from_b2 lda sqr1_lo cmp #init_mul_tables::@3] + //SEG274 [133] phi from init_mul_tables::@2 to init_mul_tables::@3 [phi:init_mul_tables::@2->init_mul_tables::@3] b3_from_b2: - //SEG165 [82] phi (byte) init_mul_tables::dir#2 = (byte/word/signed word) 255 [phi:init_mul_tables::@2->init_mul_tables::@3#0] -- vbuz1=vbuc1 + //SEG275 [133] phi (byte) init_mul_tables::dir#2 = (byte/word/signed word) 255 [phi:init_mul_tables::@2->init_mul_tables::@3#0] -- vbuz1=vbuc1 lda #$ff sta dir - //SEG166 [82] phi (byte*) init_mul_tables::sqr2_hi#2 = (const byte[512]) mul_sqr2_hi#0 [phi:init_mul_tables::@2->init_mul_tables::@3#1] -- pbuz1=pbuc1 + //SEG276 [133] phi (byte*) init_mul_tables::sqr2_hi#2 = (const byte[512]) mul_sqr2_hi#0 [phi:init_mul_tables::@2->init_mul_tables::@3#1] -- pbuz1=pbuc1 lda #mul_sqr2_hi sta sqr2_hi+1 - //SEG167 [82] phi (byte*) init_mul_tables::sqr2_lo#2 = (const byte[512]) mul_sqr2_lo#0 [phi:init_mul_tables::@2->init_mul_tables::@3#2] -- pbuz1=pbuc1 + //SEG277 [133] phi (byte*) init_mul_tables::sqr2_lo#2 = (const byte[512]) mul_sqr2_lo#0 [phi:init_mul_tables::@2->init_mul_tables::@3#2] -- pbuz1=pbuc1 lda #mul_sqr2_lo sta sqr2_lo+1 - //SEG168 [82] phi (byte) init_mul_tables::x_255#2 = ((byte))-(byte/signed byte/word/signed word) 1 [phi:init_mul_tables::@2->init_mul_tables::@3#3] -- vbuz1=vbuc1 + //SEG278 [133] phi (byte) init_mul_tables::x_255#2 = ((byte))-(byte/signed byte/word/signed word) 1 [phi:init_mul_tables::@2->init_mul_tables::@3#3] -- vbuz1=vbuc1 lda #-1 sta x_255 jmp b3 - //SEG169 [82] phi from init_mul_tables::@4 to init_mul_tables::@3 [phi:init_mul_tables::@4->init_mul_tables::@3] + //SEG279 [133] phi from init_mul_tables::@4 to init_mul_tables::@3 [phi:init_mul_tables::@4->init_mul_tables::@3] b3_from_b4: - //SEG170 [82] phi (byte) init_mul_tables::dir#2 = (byte) init_mul_tables::dir#3 [phi:init_mul_tables::@4->init_mul_tables::@3#0] -- register_copy - //SEG171 [82] phi (byte*) init_mul_tables::sqr2_hi#2 = (byte*) init_mul_tables::sqr2_hi#1 [phi:init_mul_tables::@4->init_mul_tables::@3#1] -- register_copy - //SEG172 [82] phi (byte*) init_mul_tables::sqr2_lo#2 = (byte*) init_mul_tables::sqr2_lo#1 [phi:init_mul_tables::@4->init_mul_tables::@3#2] -- register_copy - //SEG173 [82] phi (byte) init_mul_tables::x_255#2 = (byte) init_mul_tables::x_255#1 [phi:init_mul_tables::@4->init_mul_tables::@3#3] -- register_copy + //SEG280 [133] phi (byte) init_mul_tables::dir#2 = (byte) init_mul_tables::dir#3 [phi:init_mul_tables::@4->init_mul_tables::@3#0] -- register_copy + //SEG281 [133] phi (byte*) init_mul_tables::sqr2_hi#2 = (byte*) init_mul_tables::sqr2_hi#1 [phi:init_mul_tables::@4->init_mul_tables::@3#1] -- register_copy + //SEG282 [133] phi (byte*) init_mul_tables::sqr2_lo#2 = (byte*) init_mul_tables::sqr2_lo#1 [phi:init_mul_tables::@4->init_mul_tables::@3#2] -- register_copy + //SEG283 [133] phi (byte) init_mul_tables::x_255#2 = (byte) init_mul_tables::x_255#1 [phi:init_mul_tables::@4->init_mul_tables::@3#3] -- register_copy jmp b3 - //SEG174 init_mul_tables::@3 + //SEG284 init_mul_tables::@3 b3: - //SEG175 [83] *((byte*) init_mul_tables::sqr2_lo#2) ← *((const byte[512]) mul_sqr1_lo#0 + (byte) init_mul_tables::x_255#2) [ init_mul_tables::x_255#2 init_mul_tables::sqr2_lo#2 init_mul_tables::sqr2_hi#2 init_mul_tables::dir#2 ] ( main:2::init_mul_tables:5 [ init_mul_tables::x_255#2 init_mul_tables::sqr2_lo#2 init_mul_tables::sqr2_hi#2 init_mul_tables::dir#2 ] ) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 + //SEG285 [134] *((byte*) init_mul_tables::sqr2_lo#2) ← *((const byte[512]) mul_sqr1_lo#0 + (byte) init_mul_tables::x_255#2) [ init_mul_tables::x_255#2 init_mul_tables::sqr2_lo#2 init_mul_tables::sqr2_hi#2 init_mul_tables::dir#2 ] ( main:2::init_mul_tables:7 [ init_mul_tables::x_255#2 init_mul_tables::sqr2_lo#2 init_mul_tables::sqr2_hi#2 init_mul_tables::dir#2 ] ) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 ldx x_255 lda mul_sqr1_lo,x ldy #0 sta (sqr2_lo),y - //SEG176 [84] *((byte*) init_mul_tables::sqr2_hi#2) ← *((const byte[512]) mul_sqr1_hi#0 + (byte) init_mul_tables::x_255#2) [ init_mul_tables::x_255#2 init_mul_tables::sqr2_lo#2 init_mul_tables::sqr2_hi#2 init_mul_tables::dir#2 ] ( main:2::init_mul_tables:5 [ init_mul_tables::x_255#2 init_mul_tables::sqr2_lo#2 init_mul_tables::sqr2_hi#2 init_mul_tables::dir#2 ] ) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 + //SEG286 [135] *((byte*) init_mul_tables::sqr2_hi#2) ← *((const byte[512]) mul_sqr1_hi#0 + (byte) init_mul_tables::x_255#2) [ init_mul_tables::x_255#2 init_mul_tables::sqr2_lo#2 init_mul_tables::sqr2_hi#2 init_mul_tables::dir#2 ] ( main:2::init_mul_tables:7 [ init_mul_tables::x_255#2 init_mul_tables::sqr2_lo#2 init_mul_tables::sqr2_hi#2 init_mul_tables::dir#2 ] ) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 ldx x_255 lda mul_sqr1_hi,x ldy #0 sta (sqr2_hi),y - //SEG177 [85] (byte*) init_mul_tables::sqr2_hi#1 ← ++ (byte*) init_mul_tables::sqr2_hi#2 [ init_mul_tables::x_255#2 init_mul_tables::sqr2_lo#2 init_mul_tables::dir#2 init_mul_tables::sqr2_hi#1 ] ( main:2::init_mul_tables:5 [ init_mul_tables::x_255#2 init_mul_tables::sqr2_lo#2 init_mul_tables::dir#2 init_mul_tables::sqr2_hi#1 ] ) -- pbuz1=_inc_pbuz1 + //SEG287 [136] (byte*) init_mul_tables::sqr2_hi#1 ← ++ (byte*) init_mul_tables::sqr2_hi#2 [ init_mul_tables::x_255#2 init_mul_tables::sqr2_lo#2 init_mul_tables::dir#2 init_mul_tables::sqr2_hi#1 ] ( main:2::init_mul_tables:7 [ init_mul_tables::x_255#2 init_mul_tables::sqr2_lo#2 init_mul_tables::dir#2 init_mul_tables::sqr2_hi#1 ] ) -- pbuz1=_inc_pbuz1 inc sqr2_hi bne !+ inc sqr2_hi+1 !: - //SEG178 [86] (byte) init_mul_tables::x_255#1 ← (byte) init_mul_tables::x_255#2 + (byte) init_mul_tables::dir#2 [ init_mul_tables::sqr2_lo#2 init_mul_tables::dir#2 init_mul_tables::x_255#1 init_mul_tables::sqr2_hi#1 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr2_lo#2 init_mul_tables::dir#2 init_mul_tables::x_255#1 init_mul_tables::sqr2_hi#1 ] ) -- vbuz1=vbuz1_plus_vbuz2 + //SEG288 [137] (byte) init_mul_tables::x_255#1 ← (byte) init_mul_tables::x_255#2 + (byte) init_mul_tables::dir#2 [ init_mul_tables::sqr2_lo#2 init_mul_tables::dir#2 init_mul_tables::x_255#1 init_mul_tables::sqr2_hi#1 ] ( main:2::init_mul_tables:7 [ init_mul_tables::sqr2_lo#2 init_mul_tables::dir#2 init_mul_tables::x_255#1 init_mul_tables::sqr2_hi#1 ] ) -- vbuz1=vbuz1_plus_vbuz2 lda x_255 clc adc dir sta x_255 - //SEG179 [87] if((byte) init_mul_tables::x_255#1!=(byte/signed byte/word/signed word) 0) goto init_mul_tables::@12 [ init_mul_tables::sqr2_lo#2 init_mul_tables::dir#2 init_mul_tables::x_255#1 init_mul_tables::sqr2_hi#1 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr2_lo#2 init_mul_tables::dir#2 init_mul_tables::x_255#1 init_mul_tables::sqr2_hi#1 ] ) -- vbuz1_neq_0_then_la1 + //SEG289 [138] if((byte) init_mul_tables::x_255#1!=(byte/signed byte/word/signed word) 0) goto init_mul_tables::@12 [ init_mul_tables::sqr2_lo#2 init_mul_tables::dir#2 init_mul_tables::x_255#1 init_mul_tables::sqr2_hi#1 ] ( main:2::init_mul_tables:7 [ init_mul_tables::sqr2_lo#2 init_mul_tables::dir#2 init_mul_tables::x_255#1 init_mul_tables::sqr2_hi#1 ] ) -- vbuz1_neq_0_then_la1 lda x_255 bne b12_from_b3 - //SEG180 [88] phi from init_mul_tables::@3 to init_mul_tables::@4 [phi:init_mul_tables::@3->init_mul_tables::@4] + //SEG290 [139] phi from init_mul_tables::@3 to init_mul_tables::@4 [phi:init_mul_tables::@3->init_mul_tables::@4] b4_from_b3: - //SEG181 [88] phi (byte) init_mul_tables::dir#3 = (byte/signed byte/word/signed word) 1 [phi:init_mul_tables::@3->init_mul_tables::@4#0] -- vbuz1=vbuc1 + //SEG291 [139] phi (byte) init_mul_tables::dir#3 = (byte/signed byte/word/signed word) 1 [phi:init_mul_tables::@3->init_mul_tables::@4#0] -- vbuz1=vbuc1 lda #1 sta dir jmp b4 - //SEG182 init_mul_tables::@4 + //SEG292 init_mul_tables::@4 b4: - //SEG183 [89] (byte*) init_mul_tables::sqr2_lo#1 ← ++ (byte*) init_mul_tables::sqr2_lo#2 [ init_mul_tables::x_255#1 init_mul_tables::sqr2_lo#1 init_mul_tables::sqr2_hi#1 init_mul_tables::dir#3 ] ( main:2::init_mul_tables:5 [ init_mul_tables::x_255#1 init_mul_tables::sqr2_lo#1 init_mul_tables::sqr2_hi#1 init_mul_tables::dir#3 ] ) -- pbuz1=_inc_pbuz1 + //SEG293 [140] (byte*) init_mul_tables::sqr2_lo#1 ← ++ (byte*) init_mul_tables::sqr2_lo#2 [ init_mul_tables::x_255#1 init_mul_tables::sqr2_lo#1 init_mul_tables::sqr2_hi#1 init_mul_tables::dir#3 ] ( main:2::init_mul_tables:7 [ init_mul_tables::x_255#1 init_mul_tables::sqr2_lo#1 init_mul_tables::sqr2_hi#1 init_mul_tables::dir#3 ] ) -- pbuz1=_inc_pbuz1 inc sqr2_lo bne !+ inc sqr2_lo+1 !: - //SEG184 [90] if((byte*) init_mul_tables::sqr2_lo#1!=(const byte[512]) mul_sqr2_lo#0+(word/signed word) 511) goto init_mul_tables::@3 [ init_mul_tables::x_255#1 init_mul_tables::sqr2_lo#1 init_mul_tables::sqr2_hi#1 init_mul_tables::dir#3 ] ( main:2::init_mul_tables:5 [ init_mul_tables::x_255#1 init_mul_tables::sqr2_lo#1 init_mul_tables::sqr2_hi#1 init_mul_tables::dir#3 ] ) -- pbuz1_neq_pbuc1_then_la1 + //SEG294 [141] if((byte*) init_mul_tables::sqr2_lo#1!=(const byte[512]) mul_sqr2_lo#0+(word/signed word) 511) goto init_mul_tables::@3 [ init_mul_tables::x_255#1 init_mul_tables::sqr2_lo#1 init_mul_tables::sqr2_hi#1 init_mul_tables::dir#3 ] ( main:2::init_mul_tables:7 [ init_mul_tables::x_255#1 init_mul_tables::sqr2_lo#1 init_mul_tables::sqr2_hi#1 init_mul_tables::dir#3 ] ) -- pbuz1_neq_pbuc1_then_la1 lda sqr2_lo+1 cmp #>mul_sqr2_lo+$1ff bne b3_from_b4 @@ -2838,28 +4572,67 @@ init_mul_tables: { cmp #init_mul_tables::@12] + //SEG300 [145] phi from init_mul_tables::@3 to init_mul_tables::@12 [phi:init_mul_tables::@3->init_mul_tables::@12] b12_from_b3: jmp b12 - //SEG191 init_mul_tables::@12 + //SEG301 init_mul_tables::@12 b12: - //SEG192 [88] phi from init_mul_tables::@12 to init_mul_tables::@4 [phi:init_mul_tables::@12->init_mul_tables::@4] + //SEG302 [139] phi from init_mul_tables::@12 to init_mul_tables::@4 [phi:init_mul_tables::@12->init_mul_tables::@4] b4_from_b12: - //SEG193 [88] phi (byte) init_mul_tables::dir#3 = (byte) init_mul_tables::dir#2 [phi:init_mul_tables::@12->init_mul_tables::@4#0] -- register_copy + //SEG303 [139] phi (byte) init_mul_tables::dir#3 = (byte) init_mul_tables::dir#2 [phi:init_mul_tables::@12->init_mul_tables::@4#0] -- register_copy jmp b4 +} +//SEG304 print_cls +print_cls: { + .label sc = $23 + //SEG305 [147] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + b1_from_print_cls: + //SEG306 [147] phi (byte*) print_cls::sc#2 = ((byte*))(word/signed word) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + lda #<$400 + sta sc + lda #>$400 + sta sc+1 + jmp b1 + //SEG307 [147] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + b1_from_b1: + //SEG308 [147] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + jmp b1 + //SEG309 print_cls::@1 + b1: + //SEG310 [148] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] ) -- _deref_pbuz1=vbuc1 + ldy #0 + lda #' ' + sta (sc),y + //SEG311 [149] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) -- pbuz1=_inc_pbuz1 + inc sc + bne !+ + inc sc+1 + !: + //SEG312 [150] if((byte*) print_cls::sc#1!=(word/signed word) 1024+(word/signed word) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) -- pbuz1_neq_vwuc1_then_la1 + lda sc+1 + cmp #>$400+$3e8 + bne b1_from_b1 + lda sc + cmp #<$400+$3e8 + bne b1_from_b1 + jmp breturn + //SEG313 print_cls::@return + breturn: + //SEG314 [151] return [ ] ( main:2::print_cls:5 [ ] ) + rts } .align $100 mul_sqr1_lo: .fill $200, 0 @@ -2879,139 +4652,221 @@ init_mul_tables: { asm_mul_sqr2_hi: .fill $200, 0 REGISTER UPLIFT POTENTIAL REGISTERS -Statement [11] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 5 [ ] ( main:2::mul_tables_compare:9 [ ] ) always clobbers reg byte a -Statement [13] if(*((byte*) mul_tables_compare::kc_sqr#2)==*((byte*) mul_tables_compare::asm_sqr#2)) goto mul_tables_compare::@2 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 ] ( main:2::mul_tables_compare:9 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 ] ) always clobbers reg byte a reg byte y -Statement [14] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 2 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 ] ( main:2::mul_tables_compare:9 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 ] ) always clobbers reg byte a -Statement [18] (word) print_word::w#0 ← ((word)) (byte*) mul_tables_compare::asm_sqr#2 [ mul_tables_compare::kc_sqr#2 print_word::w#0 char_cursor#19 ] ( main:2::mul_tables_compare:9 [ mul_tables_compare::kc_sqr#2 print_word::w#0 char_cursor#19 ] ) always clobbers reg byte a -Statement [22] (word) print_word::w#1 ← ((word)) (byte*) mul_tables_compare::kc_sqr#2 [ print_word::w#1 char_cursor#19 ] ( main:2::mul_tables_compare:9 [ print_word::w#1 char_cursor#19 ] ) always clobbers reg byte a -Statement [28] if((byte*) mul_tables_compare::kc_sqr#1<(const byte[512]) mul_sqr1_lo#0+(word/signed word) 512*(byte/signed byte/word/signed word) 4) goto mul_tables_compare::@1 [ mul_tables_compare::kc_sqr#1 mul_tables_compare::asm_sqr#1 ] ( main:2::mul_tables_compare:9 [ mul_tables_compare::kc_sqr#1 mul_tables_compare::asm_sqr#1 ] ) always clobbers reg byte a -Statement [30] (byte) print_byte::b#0 ← > (word) print_word::w#2 [ print_word::w#2 print_byte::b#0 char_cursor#19 ] ( main:2::mul_tables_compare:9::print_word:19 [ mul_tables_compare::kc_sqr#2 print_word::w#2 print_byte::b#0 char_cursor#19 ] main:2::mul_tables_compare:9::print_word:23 [ print_word::w#2 print_byte::b#0 char_cursor#19 ] ) always clobbers reg byte a -Statement [32] (byte) print_byte::b#1 ← < (word) print_word::w#2 [ char_cursor#10 print_byte::b#1 ] ( main:2::mul_tables_compare:9::print_word:19 [ mul_tables_compare::kc_sqr#2 char_cursor#10 print_byte::b#1 ] main:2::mul_tables_compare:9::print_word:23 [ char_cursor#10 print_byte::b#1 ] ) always clobbers reg byte a -Statement [39] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word) 15 [ char_cursor#10 print_byte::$2 ] ( main:2::mul_tables_compare:9::print_word:19::print_byte:31 [ mul_tables_compare::kc_sqr#2 print_word::w#2 char_cursor#10 print_byte::$2 ] main:2::mul_tables_compare:9::print_word:23::print_byte:31 [ print_word::w#2 char_cursor#10 print_byte::$2 ] main:2::mul_tables_compare:9::print_word:19::print_byte:33 [ mul_tables_compare::kc_sqr#2 char_cursor#10 print_byte::$2 ] main:2::mul_tables_compare:9::print_word:23::print_byte:33 [ char_cursor#10 print_byte::$2 ] ) always clobbers reg byte a -Statement [44] *((byte*) char_cursor#27) ← (byte) print_char::ch#2 [ char_cursor#27 ] ( main:2::mul_tables_compare:9::print_word:19::print_byte:31::print_char:38 [ mul_tables_compare::kc_sqr#2 print_word::w#2 print_byte::b#2 char_cursor#27 ] main:2::mul_tables_compare:9::print_word:23::print_byte:31::print_char:38 [ print_word::w#2 print_byte::b#2 char_cursor#27 ] main:2::mul_tables_compare:9::print_word:19::print_byte:33::print_char:38 [ mul_tables_compare::kc_sqr#2 print_byte::b#2 char_cursor#27 ] main:2::mul_tables_compare:9::print_word:23::print_byte:33::print_char:38 [ print_byte::b#2 char_cursor#27 ] main:2::mul_tables_compare:9::print_word:19::print_byte:31::print_char:41 [ mul_tables_compare::kc_sqr#2 print_word::w#2 char_cursor#27 ] main:2::mul_tables_compare:9::print_word:23::print_byte:31::print_char:41 [ print_word::w#2 char_cursor#27 ] main:2::mul_tables_compare:9::print_word:19::print_byte:33::print_char:41 [ mul_tables_compare::kc_sqr#2 char_cursor#27 ] main:2::mul_tables_compare:9::print_word:23::print_byte:33::print_char:41 [ char_cursor#27 ] ) always clobbers reg byte y -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:8 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -Statement [49] if(*((byte*) print_str::str#3)!=(byte) '@') goto print_str::@2 [ char_cursor#19 print_str::str#3 ] ( main:2::mul_tables_compare:9::print_str:17 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 char_cursor#19 print_str::str#3 ] main:2::mul_tables_compare:9::print_str:21 [ mul_tables_compare::kc_sqr#2 char_cursor#19 print_str::str#3 ] ) always clobbers reg byte a reg byte y -Statement [51] *((byte*) char_cursor#19) ← *((byte*) print_str::str#3) [ char_cursor#19 print_str::str#3 ] ( main:2::mul_tables_compare:9::print_str:17 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 char_cursor#19 print_str::str#3 ] main:2::mul_tables_compare:9::print_str:21 [ mul_tables_compare::kc_sqr#2 char_cursor#19 print_str::str#3 ] ) always clobbers reg byte a reg byte y -Statement [56] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::mul_tables_compare:9::print_cls:15 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 print_cls::sc#2 ] ) always clobbers reg byte a reg byte y -Statement [58] if((byte*) print_cls::sc#1!=(word/signed word) 1024+(word/signed word) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::mul_tables_compare:9::print_cls:15 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 print_cls::sc#1 ] ) always clobbers reg byte a +Statement [4] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 5 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [21] (word) slow_multiply::return#2 ← (word) slow_multiply::return#0 [ mul_results_compare::a#5 mul_results_compare::b#2 slow_multiply::return#2 line_cursor#17 char_cursor#20 ] ( main:2::mul_results_compare:13 [ mul_results_compare::a#5 mul_results_compare::b#2 slow_multiply::return#2 line_cursor#17 char_cursor#20 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ mul_results_compare::a#5 mul_results_compare::a#1 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:3 [ mul_results_compare::b#2 mul_results_compare::b#1 ] +Statement [22] (word) mul_results_compare::ms#0 ← (word) slow_multiply::return#2 [ mul_results_compare::a#5 mul_results_compare::b#2 mul_results_compare::ms#0 line_cursor#17 char_cursor#20 ] ( main:2::mul_results_compare:13 [ mul_results_compare::a#5 mul_results_compare::b#2 mul_results_compare::ms#0 line_cursor#17 char_cursor#20 ] ) always clobbers reg byte a +Statement [26] (word) asm_multiply::return#2 ← (word) asm_multiply::return#0 [ mul_results_compare::a#5 mul_results_compare::b#2 mul_results_compare::ms#0 asm_multiply::return#2 line_cursor#17 char_cursor#20 ] ( main:2::mul_results_compare:13 [ mul_results_compare::a#5 mul_results_compare::b#2 mul_results_compare::ms#0 asm_multiply::return#2 line_cursor#17 char_cursor#20 ] ) always clobbers reg byte a +Statement [27] (word) mul_results_compare::ma#0 ← (word) asm_multiply::return#2 [ mul_results_compare::a#5 mul_results_compare::b#2 mul_results_compare::ms#0 mul_results_compare::ma#0 line_cursor#17 char_cursor#20 ] ( main:2::mul_results_compare:13 [ mul_results_compare::a#5 mul_results_compare::b#2 mul_results_compare::ms#0 mul_results_compare::ma#0 line_cursor#17 char_cursor#20 ] ) always clobbers reg byte a +Statement [28] if((word) mul_results_compare::ms#0==(word) mul_results_compare::ma#0) goto mul_results_compare::@3 [ mul_results_compare::a#5 mul_results_compare::b#2 mul_results_compare::ms#0 mul_results_compare::ma#0 line_cursor#17 char_cursor#20 ] ( main:2::mul_results_compare:13 [ mul_results_compare::a#5 mul_results_compare::b#2 mul_results_compare::ms#0 mul_results_compare::ma#0 line_cursor#17 char_cursor#20 ] ) always clobbers reg byte a +Statement [29] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 2 [ mul_results_compare::ms#0 mul_results_compare::ma#0 line_cursor#17 char_cursor#20 ] ( main:2::mul_results_compare:13 [ mul_results_compare::ms#0 mul_results_compare::ma#0 line_cursor#17 char_cursor#20 ] ) always clobbers reg byte a +Statement [31] (word) print_word::w#2 ← (word) mul_results_compare::ms#0 [ mul_results_compare::ma#0 print_word::w#2 line_cursor#17 char_cursor#2 ] ( main:2::mul_results_compare:13 [ mul_results_compare::ma#0 print_word::w#2 line_cursor#17 char_cursor#2 ] ) always clobbers reg byte a +Statement [35] (word) print_word::w#3 ← (word) mul_results_compare::ma#0 [ print_word::w#3 line_cursor#17 char_cursor#2 ] ( main:2::mul_results_compare:13 [ print_word::w#3 line_cursor#17 char_cursor#2 ] ) always clobbers reg byte a +Statement [47] (byte*~) char_cursor#89 ← (byte*) line_cursor#1 [ char_cursor#89 line_cursor#1 ] ( main:2::mul_results_compare:13 [ char_cursor#89 line_cursor#1 ] ) always clobbers reg byte a +Statement [50] (byte*) line_cursor#1 ← (byte*) line_cursor#11 + (byte/signed byte/word/signed word) 40 [ line_cursor#1 char_cursor#2 ] ( main:2::mul_results_compare:13::print_ln:46 [ line_cursor#1 char_cursor#2 ] main:2::mul_tables_compare:11::print_ln:109 [ line_cursor#1 char_cursor#2 ] ) always clobbers reg byte a +Statement [51] if((byte*) line_cursor#1<(byte*) char_cursor#2) goto print_ln::@1 [ line_cursor#1 char_cursor#2 ] ( main:2::mul_results_compare:13::print_ln:46 [ line_cursor#1 char_cursor#2 ] main:2::mul_tables_compare:11::print_ln:109 [ line_cursor#1 char_cursor#2 ] ) always clobbers reg byte a +Statement [55] if(*((byte*) print_str::str#7)!=(byte) '@') goto print_str::@2 [ char_cursor#2 print_str::str#7 ] ( main:2::mul_results_compare:13::print_str:30 [ mul_results_compare::ms#0 mul_results_compare::ma#0 line_cursor#17 char_cursor#2 print_str::str#7 ] main:2::mul_results_compare:13::print_str:34 [ mul_results_compare::ma#0 line_cursor#17 char_cursor#2 print_str::str#7 ] main:2::mul_results_compare:13::print_str:44 [ line_cursor#17 char_cursor#2 print_str::str#7 ] main:2::mul_tables_compare:11::print_str:94 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 char_cursor#2 print_str::str#7 ] main:2::mul_tables_compare:11::print_str:98 [ mul_tables_compare::kc_sqr#2 char_cursor#2 print_str::str#7 ] main:2::mul_tables_compare:11::print_str:107 [ char_cursor#2 print_str::str#7 ] ) always clobbers reg byte a reg byte y +Statement [57] *((byte*) char_cursor#2) ← *((byte*) print_str::str#7) [ char_cursor#2 print_str::str#7 ] ( main:2::mul_results_compare:13::print_str:30 [ mul_results_compare::ms#0 mul_results_compare::ma#0 line_cursor#17 char_cursor#2 print_str::str#7 ] main:2::mul_results_compare:13::print_str:34 [ mul_results_compare::ma#0 line_cursor#17 char_cursor#2 print_str::str#7 ] main:2::mul_results_compare:13::print_str:44 [ line_cursor#17 char_cursor#2 print_str::str#7 ] main:2::mul_tables_compare:11::print_str:94 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 char_cursor#2 print_str::str#7 ] main:2::mul_tables_compare:11::print_str:98 [ mul_tables_compare::kc_sqr#2 char_cursor#2 print_str::str#7 ] main:2::mul_tables_compare:11::print_str:107 [ char_cursor#2 print_str::str#7 ] ) always clobbers reg byte a reg byte y +Statement [61] (byte) print_byte::b#0 ← > (word) print_word::w#4 [ char_cursor#2 print_word::w#4 print_byte::b#0 ] ( main:2::mul_results_compare:13::print_word:32 [ mul_results_compare::ma#0 line_cursor#17 char_cursor#2 print_word::w#4 print_byte::b#0 ] main:2::mul_results_compare:13::print_word:36 [ line_cursor#17 char_cursor#2 print_word::w#4 print_byte::b#0 ] main:2::mul_tables_compare:11::print_word:96 [ mul_tables_compare::kc_sqr#2 char_cursor#2 print_word::w#4 print_byte::b#0 ] main:2::mul_tables_compare:11::print_word:100 [ char_cursor#2 print_word::w#4 print_byte::b#0 ] ) always clobbers reg byte a +Statement [63] (byte) print_byte::b#1 ← < (word) print_word::w#4 [ char_cursor#11 print_byte::b#1 ] ( main:2::mul_results_compare:13::print_word:32 [ mul_results_compare::ma#0 line_cursor#17 char_cursor#11 print_byte::b#1 ] main:2::mul_results_compare:13::print_word:36 [ line_cursor#17 char_cursor#11 print_byte::b#1 ] main:2::mul_tables_compare:11::print_word:96 [ mul_tables_compare::kc_sqr#2 char_cursor#11 print_byte::b#1 ] main:2::mul_tables_compare:11::print_word:100 [ char_cursor#11 print_byte::b#1 ] ) always clobbers reg byte a +Statement [70] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word) 15 [ char_cursor#11 print_byte::$2 ] ( main:2::mul_results_compare:13::print_word:32::print_byte:62 [ mul_results_compare::ma#0 line_cursor#17 print_word::w#4 char_cursor#11 print_byte::$2 ] main:2::mul_results_compare:13::print_word:36::print_byte:62 [ line_cursor#17 print_word::w#4 char_cursor#11 print_byte::$2 ] main:2::mul_tables_compare:11::print_word:96::print_byte:62 [ mul_tables_compare::kc_sqr#2 print_word::w#4 char_cursor#11 print_byte::$2 ] main:2::mul_tables_compare:11::print_word:100::print_byte:62 [ print_word::w#4 char_cursor#11 print_byte::$2 ] main:2::mul_results_compare:13::print_word:32::print_byte:64 [ mul_results_compare::ma#0 line_cursor#17 char_cursor#11 print_byte::$2 ] main:2::mul_results_compare:13::print_word:36::print_byte:64 [ line_cursor#17 char_cursor#11 print_byte::$2 ] main:2::mul_tables_compare:11::print_word:96::print_byte:64 [ mul_tables_compare::kc_sqr#2 char_cursor#11 print_byte::$2 ] main:2::mul_tables_compare:11::print_word:100::print_byte:64 [ char_cursor#11 print_byte::$2 ] ) always clobbers reg byte a +Statement [75] *((byte*) char_cursor#41) ← (byte) print_char::ch#2 [ char_cursor#41 ] ( main:2::mul_results_compare:13::print_word:32::print_byte:62::print_char:69 [ mul_results_compare::ma#0 line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#41 ] main:2::mul_results_compare:13::print_word:36::print_byte:62::print_char:69 [ line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#41 ] main:2::mul_tables_compare:11::print_word:96::print_byte:62::print_char:69 [ mul_tables_compare::kc_sqr#2 print_word::w#4 print_byte::b#2 char_cursor#41 ] main:2::mul_tables_compare:11::print_word:100::print_byte:62::print_char:69 [ print_word::w#4 print_byte::b#2 char_cursor#41 ] main:2::mul_results_compare:13::print_word:32::print_byte:64::print_char:69 [ mul_results_compare::ma#0 line_cursor#17 print_byte::b#2 char_cursor#41 ] main:2::mul_results_compare:13::print_word:36::print_byte:64::print_char:69 [ line_cursor#17 print_byte::b#2 char_cursor#41 ] main:2::mul_tables_compare:11::print_word:96::print_byte:64::print_char:69 [ mul_tables_compare::kc_sqr#2 print_byte::b#2 char_cursor#41 ] main:2::mul_tables_compare:11::print_word:100::print_byte:64::print_char:69 [ print_byte::b#2 char_cursor#41 ] main:2::mul_results_compare:13::print_word:32::print_byte:62::print_char:72 [ mul_results_compare::ma#0 line_cursor#17 print_word::w#4 char_cursor#41 ] main:2::mul_results_compare:13::print_word:36::print_byte:62::print_char:72 [ line_cursor#17 print_word::w#4 char_cursor#41 ] main:2::mul_tables_compare:11::print_word:96::print_byte:62::print_char:72 [ mul_tables_compare::kc_sqr#2 print_word::w#4 char_cursor#41 ] main:2::mul_tables_compare:11::print_word:100::print_byte:62::print_char:72 [ print_word::w#4 char_cursor#41 ] main:2::mul_results_compare:13::print_word:32::print_byte:64::print_char:72 [ mul_results_compare::ma#0 line_cursor#17 char_cursor#41 ] main:2::mul_results_compare:13::print_word:36::print_byte:64::print_char:72 [ line_cursor#17 char_cursor#41 ] main:2::mul_tables_compare:11::print_word:96::print_byte:64::print_char:72 [ mul_tables_compare::kc_sqr#2 char_cursor#41 ] main:2::mul_tables_compare:11::print_word:100::print_byte:64::print_char:72 [ char_cursor#41 ] ) always clobbers reg byte y +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:10 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] +Statement asm { ldamemAstasm1+1stasm3+1eor#$ffstasm2+1stasm4+1ldxmemBsecsm1:ldaasm_mul_sqr1_lo,xsm2:sbcasm_mul_sqr2_lo,xstamemAsm3:ldaasm_mul_sqr1_hi,xsm4:sbcasm_mul_sqr2_hi,xstamemB } always clobbers reg byte a reg byte x +Removing always clobbered register reg byte x as potential for zp ZP_BYTE:2 [ mul_results_compare::a#5 mul_results_compare::a#1 ] +Removing always clobbered register reg byte x as potential for zp ZP_BYTE:3 [ mul_results_compare::b#2 mul_results_compare::b#1 ] +Statement [81] (word) asm_multiply::return#0 ← *((const byte*) asm_multiply::memB#0) w= *((const byte*) asm_multiply::memA#0) [ asm_multiply::return#0 ] ( main:2::mul_results_compare:13::asm_multiply:25 [ mul_results_compare::a#5 mul_results_compare::b#2 mul_results_compare::ms#0 line_cursor#17 char_cursor#20 asm_multiply::return#0 ] ) always clobbers reg byte a +Statement [85] (word) slow_multiply::m#1 ← (word) slow_multiply::m#3 + (byte) slow_multiply::b#0 [ slow_multiply::a#0 slow_multiply::b#0 slow_multiply::i#2 slow_multiply::m#1 ] ( main:2::mul_results_compare:13::slow_multiply:20 [ mul_results_compare::a#5 mul_results_compare::b#2 line_cursor#17 char_cursor#20 slow_multiply::a#0 slow_multiply::b#0 slow_multiply::i#2 slow_multiply::m#1 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:37 [ slow_multiply::a#0 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:38 [ slow_multiply::b#0 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:14 [ slow_multiply::i#2 slow_multiply::i#1 ] +Statement [92] if(*((byte*) mul_tables_compare::kc_sqr#2)==*((byte*) mul_tables_compare::asm_sqr#2)) goto mul_tables_compare::@2 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 ] ( main:2::mul_tables_compare:11 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 ] ) always clobbers reg byte a reg byte y +Statement [93] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 2 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 ] ( main:2::mul_tables_compare:11 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 ] ) always clobbers reg byte a +Statement [95] (word) print_word::w#0 ← ((word)) (byte*) mul_tables_compare::asm_sqr#2 [ char_cursor#2 print_word::w#0 mul_tables_compare::kc_sqr#2 ] ( main:2::mul_tables_compare:11 [ char_cursor#2 print_word::w#0 mul_tables_compare::kc_sqr#2 ] ) always clobbers reg byte a +Statement [99] (word) print_word::w#1 ← ((word)) (byte*) mul_tables_compare::kc_sqr#2 [ char_cursor#2 print_word::w#1 ] ( main:2::mul_tables_compare:11 [ char_cursor#2 print_word::w#1 ] ) always clobbers reg byte a +Statement [105] if((byte*) mul_tables_compare::kc_sqr#1<(const byte[512]) mul_sqr1_lo#0+(word/signed word) 512*(byte/signed byte/word/signed word) 4) goto mul_tables_compare::@1 [ mul_tables_compare::kc_sqr#1 mul_tables_compare::asm_sqr#1 ] ( main:2::mul_tables_compare:11 [ mul_tables_compare::kc_sqr#1 mul_tables_compare::asm_sqr#1 ] ) always clobbers reg byte a +Statement [110] (byte*~) char_cursor#100 ← (byte*) line_cursor#1 [ line_cursor#1 char_cursor#100 ] ( main:2::mul_tables_compare:11 [ line_cursor#1 char_cursor#100 ] ) always clobbers reg byte a Statement asm { ldx#$00txa.byte$c9lb1:tyaadc#$00ml1:staasm_mul_sqr1_hi,xtaycmp#$40txarorml9:adc#$00staml9+1inxml0:staasm_mul_sqr1_lo,xbnelb1incml0+2incml1+2clcinybnelb1ldx#$00ldy#$ff!:ldaasm_mul_sqr1_hi+1,xstaasm_mul_sqr2_hi+$100,xldaasm_mul_sqr1_hi,xstaasm_mul_sqr2_hi,yldaasm_mul_sqr1_lo+1,xstaasm_mul_sqr2_lo+$100,xldaasm_mul_sqr1_lo,xstaasm_mul_sqr2_lo,ydeyinxbne!- } always clobbers reg byte a reg byte x reg byte y -Statement [61] *((const byte*) init_mul_tables_asm::mem#0) ← *((const byte[512]) asm_mul_sqr1_lo#0) [ ] ( main:2::init_mul_tables_asm:7 [ ] ) always clobbers reg byte a -Statement [62] *((const byte*) init_mul_tables_asm::mem#0) ← *((const byte[512]) asm_mul_sqr1_hi#0) [ ] ( main:2::init_mul_tables_asm:7 [ ] ) always clobbers reg byte a -Statement [63] *((const byte*) init_mul_tables_asm::mem#0) ← *((const byte[512]) asm_mul_sqr2_lo#0) [ ] ( main:2::init_mul_tables_asm:7 [ ] ) always clobbers reg byte a -Statement [64] *((const byte*) init_mul_tables_asm::mem#0) ← *((const byte[512]) asm_mul_sqr2_hi#0) [ ] ( main:2::init_mul_tables_asm:7 [ ] ) always clobbers reg byte a -Statement [69] (byte~) init_mul_tables::$2 ← (byte) init_mul_tables::c#1 & (byte/signed byte/word/signed word) 1 [ init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::x_2#3 init_mul_tables::c#1 init_mul_tables::$2 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::x_2#3 init_mul_tables::c#1 init_mul_tables::$2 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:21 [ init_mul_tables::x_2#3 init_mul_tables::x_2#2 init_mul_tables::x_2#1 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:16 [ init_mul_tables::c#2 init_mul_tables::c#1 ] -Statement [74] (byte~) init_mul_tables::$5 ← < (word) init_mul_tables::sqr#3 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 init_mul_tables::$5 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 init_mul_tables::$5 ] ) always clobbers reg byte a -Statement [75] *((byte*) init_mul_tables::sqr1_lo#2) ← (byte~) init_mul_tables::$5 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 ] ) always clobbers reg byte y -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:16 [ init_mul_tables::c#2 init_mul_tables::c#1 ] -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:21 [ init_mul_tables::x_2#3 init_mul_tables::x_2#2 init_mul_tables::x_2#1 ] -Statement [76] (byte~) init_mul_tables::$6 ← > (word) init_mul_tables::sqr#3 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 init_mul_tables::$6 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 init_mul_tables::$6 ] ) always clobbers reg byte a -Statement [77] *((byte*) init_mul_tables::sqr1_hi#2) ← (byte~) init_mul_tables::$6 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 ] ) always clobbers reg byte y -Statement [79] (word) init_mul_tables::sqr#1 ← (word) init_mul_tables::sqr#3 + (byte) init_mul_tables::x_2#2 [ init_mul_tables::sqr1_lo#2 init_mul_tables::c#1 init_mul_tables::sqr#1 init_mul_tables::sqr1_hi#1 init_mul_tables::x_2#2 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr1_lo#2 init_mul_tables::c#1 init_mul_tables::sqr#1 init_mul_tables::sqr1_hi#1 init_mul_tables::x_2#2 ] ) always clobbers reg byte a -Statement [81] if((byte*) init_mul_tables::sqr1_lo#1!=(const byte[512]) mul_sqr1_lo#0+(word/signed word) 512) goto init_mul_tables::@1 [ init_mul_tables::c#1 init_mul_tables::sqr#1 init_mul_tables::sqr1_lo#1 init_mul_tables::sqr1_hi#1 init_mul_tables::x_2#2 ] ( main:2::init_mul_tables:5 [ init_mul_tables::c#1 init_mul_tables::sqr#1 init_mul_tables::sqr1_lo#1 init_mul_tables::sqr1_hi#1 init_mul_tables::x_2#2 ] ) always clobbers reg byte a -Statement [83] *((byte*) init_mul_tables::sqr2_lo#2) ← *((const byte[512]) mul_sqr1_lo#0 + (byte) init_mul_tables::x_255#2) [ init_mul_tables::x_255#2 init_mul_tables::sqr2_lo#2 init_mul_tables::sqr2_hi#2 init_mul_tables::dir#2 ] ( main:2::init_mul_tables:5 [ init_mul_tables::x_255#2 init_mul_tables::sqr2_lo#2 init_mul_tables::sqr2_hi#2 init_mul_tables::dir#2 ] ) always clobbers reg byte a reg byte y -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:24 [ init_mul_tables::x_255#2 init_mul_tables::x_255#1 ] -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:24 [ init_mul_tables::x_255#2 init_mul_tables::x_255#1 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:29 [ init_mul_tables::dir#2 init_mul_tables::dir#3 ] -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:29 [ init_mul_tables::dir#2 init_mul_tables::dir#3 ] -Statement [84] *((byte*) init_mul_tables::sqr2_hi#2) ← *((const byte[512]) mul_sqr1_hi#0 + (byte) init_mul_tables::x_255#2) [ init_mul_tables::x_255#2 init_mul_tables::sqr2_lo#2 init_mul_tables::sqr2_hi#2 init_mul_tables::dir#2 ] ( main:2::init_mul_tables:5 [ init_mul_tables::x_255#2 init_mul_tables::sqr2_lo#2 init_mul_tables::sqr2_hi#2 init_mul_tables::dir#2 ] ) always clobbers reg byte a reg byte y -Statement [86] (byte) init_mul_tables::x_255#1 ← (byte) init_mul_tables::x_255#2 + (byte) init_mul_tables::dir#2 [ init_mul_tables::sqr2_lo#2 init_mul_tables::dir#2 init_mul_tables::x_255#1 init_mul_tables::sqr2_hi#1 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr2_lo#2 init_mul_tables::dir#2 init_mul_tables::x_255#1 init_mul_tables::sqr2_hi#1 ] ) always clobbers reg byte a -Statement [90] if((byte*) init_mul_tables::sqr2_lo#1!=(const byte[512]) mul_sqr2_lo#0+(word/signed word) 511) goto init_mul_tables::@3 [ init_mul_tables::x_255#1 init_mul_tables::sqr2_lo#1 init_mul_tables::sqr2_hi#1 init_mul_tables::dir#3 ] ( main:2::init_mul_tables:5 [ init_mul_tables::x_255#1 init_mul_tables::sqr2_lo#1 init_mul_tables::sqr2_hi#1 init_mul_tables::dir#3 ] ) always clobbers reg byte a -Statement [91] *((const byte[512]) mul_sqr2_lo#0+(word/signed word) 511) ← *((const byte[512]) mul_sqr1_lo#0+(word/signed word) 256) [ ] ( main:2::init_mul_tables:5 [ ] ) always clobbers reg byte a -Statement [92] *((const byte[512]) mul_sqr2_hi#0+(word/signed word) 511) ← *((const byte[512]) mul_sqr1_hi#0+(word/signed word) 256) [ ] ( main:2::init_mul_tables:5 [ ] ) always clobbers reg byte a -Statement [11] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 5 [ ] ( main:2::mul_tables_compare:9 [ ] ) always clobbers reg byte a -Statement [13] if(*((byte*) mul_tables_compare::kc_sqr#2)==*((byte*) mul_tables_compare::asm_sqr#2)) goto mul_tables_compare::@2 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 ] ( main:2::mul_tables_compare:9 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 ] ) always clobbers reg byte a reg byte y -Statement [14] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 2 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 ] ( main:2::mul_tables_compare:9 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 ] ) always clobbers reg byte a -Statement [18] (word) print_word::w#0 ← ((word)) (byte*) mul_tables_compare::asm_sqr#2 [ mul_tables_compare::kc_sqr#2 print_word::w#0 char_cursor#19 ] ( main:2::mul_tables_compare:9 [ mul_tables_compare::kc_sqr#2 print_word::w#0 char_cursor#19 ] ) always clobbers reg byte a -Statement [22] (word) print_word::w#1 ← ((word)) (byte*) mul_tables_compare::kc_sqr#2 [ print_word::w#1 char_cursor#19 ] ( main:2::mul_tables_compare:9 [ print_word::w#1 char_cursor#19 ] ) always clobbers reg byte a -Statement [28] if((byte*) mul_tables_compare::kc_sqr#1<(const byte[512]) mul_sqr1_lo#0+(word/signed word) 512*(byte/signed byte/word/signed word) 4) goto mul_tables_compare::@1 [ mul_tables_compare::kc_sqr#1 mul_tables_compare::asm_sqr#1 ] ( main:2::mul_tables_compare:9 [ mul_tables_compare::kc_sqr#1 mul_tables_compare::asm_sqr#1 ] ) always clobbers reg byte a -Statement [30] (byte) print_byte::b#0 ← > (word) print_word::w#2 [ print_word::w#2 print_byte::b#0 char_cursor#19 ] ( main:2::mul_tables_compare:9::print_word:19 [ mul_tables_compare::kc_sqr#2 print_word::w#2 print_byte::b#0 char_cursor#19 ] main:2::mul_tables_compare:9::print_word:23 [ print_word::w#2 print_byte::b#0 char_cursor#19 ] ) always clobbers reg byte a -Statement [32] (byte) print_byte::b#1 ← < (word) print_word::w#2 [ char_cursor#10 print_byte::b#1 ] ( main:2::mul_tables_compare:9::print_word:19 [ mul_tables_compare::kc_sqr#2 char_cursor#10 print_byte::b#1 ] main:2::mul_tables_compare:9::print_word:23 [ char_cursor#10 print_byte::b#1 ] ) always clobbers reg byte a -Statement [39] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word) 15 [ char_cursor#10 print_byte::$2 ] ( main:2::mul_tables_compare:9::print_word:19::print_byte:31 [ mul_tables_compare::kc_sqr#2 print_word::w#2 char_cursor#10 print_byte::$2 ] main:2::mul_tables_compare:9::print_word:23::print_byte:31 [ print_word::w#2 char_cursor#10 print_byte::$2 ] main:2::mul_tables_compare:9::print_word:19::print_byte:33 [ mul_tables_compare::kc_sqr#2 char_cursor#10 print_byte::$2 ] main:2::mul_tables_compare:9::print_word:23::print_byte:33 [ char_cursor#10 print_byte::$2 ] ) always clobbers reg byte a -Statement [44] *((byte*) char_cursor#27) ← (byte) print_char::ch#2 [ char_cursor#27 ] ( main:2::mul_tables_compare:9::print_word:19::print_byte:31::print_char:38 [ mul_tables_compare::kc_sqr#2 print_word::w#2 print_byte::b#2 char_cursor#27 ] main:2::mul_tables_compare:9::print_word:23::print_byte:31::print_char:38 [ print_word::w#2 print_byte::b#2 char_cursor#27 ] main:2::mul_tables_compare:9::print_word:19::print_byte:33::print_char:38 [ mul_tables_compare::kc_sqr#2 print_byte::b#2 char_cursor#27 ] main:2::mul_tables_compare:9::print_word:23::print_byte:33::print_char:38 [ print_byte::b#2 char_cursor#27 ] main:2::mul_tables_compare:9::print_word:19::print_byte:31::print_char:41 [ mul_tables_compare::kc_sqr#2 print_word::w#2 char_cursor#27 ] main:2::mul_tables_compare:9::print_word:23::print_byte:31::print_char:41 [ print_word::w#2 char_cursor#27 ] main:2::mul_tables_compare:9::print_word:19::print_byte:33::print_char:41 [ mul_tables_compare::kc_sqr#2 char_cursor#27 ] main:2::mul_tables_compare:9::print_word:23::print_byte:33::print_char:41 [ char_cursor#27 ] ) always clobbers reg byte y -Statement [49] if(*((byte*) print_str::str#3)!=(byte) '@') goto print_str::@2 [ char_cursor#19 print_str::str#3 ] ( main:2::mul_tables_compare:9::print_str:17 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 char_cursor#19 print_str::str#3 ] main:2::mul_tables_compare:9::print_str:21 [ mul_tables_compare::kc_sqr#2 char_cursor#19 print_str::str#3 ] ) always clobbers reg byte a reg byte y -Statement [51] *((byte*) char_cursor#19) ← *((byte*) print_str::str#3) [ char_cursor#19 print_str::str#3 ] ( main:2::mul_tables_compare:9::print_str:17 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 char_cursor#19 print_str::str#3 ] main:2::mul_tables_compare:9::print_str:21 [ mul_tables_compare::kc_sqr#2 char_cursor#19 print_str::str#3 ] ) always clobbers reg byte a reg byte y -Statement [56] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::mul_tables_compare:9::print_cls:15 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 print_cls::sc#2 ] ) always clobbers reg byte a reg byte y -Statement [58] if((byte*) print_cls::sc#1!=(word/signed word) 1024+(word/signed word) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::mul_tables_compare:9::print_cls:15 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 print_cls::sc#1 ] ) always clobbers reg byte a +Statement [112] *((const byte*) init_mul_tables_asm::mem#0) ← *((const byte[512]) asm_mul_sqr1_lo#0) [ ] ( main:2::init_mul_tables_asm:9 [ ] ) always clobbers reg byte a +Statement [113] *((const byte*) init_mul_tables_asm::mem#0) ← *((const byte[512]) asm_mul_sqr1_hi#0) [ ] ( main:2::init_mul_tables_asm:9 [ ] ) always clobbers reg byte a +Statement [114] *((const byte*) init_mul_tables_asm::mem#0) ← *((const byte[512]) asm_mul_sqr2_lo#0) [ ] ( main:2::init_mul_tables_asm:9 [ ] ) always clobbers reg byte a +Statement [115] *((const byte*) init_mul_tables_asm::mem#0) ← *((const byte[512]) asm_mul_sqr2_hi#0) [ ] ( main:2::init_mul_tables_asm:9 [ ] ) always clobbers reg byte a +Statement [120] (byte~) init_mul_tables::$2 ← (byte) init_mul_tables::c#1 & (byte/signed byte/word/signed word) 1 [ init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::x_2#3 init_mul_tables::c#1 init_mul_tables::$2 ] ( main:2::init_mul_tables:7 [ init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::x_2#3 init_mul_tables::c#1 init_mul_tables::$2 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:26 [ init_mul_tables::x_2#3 init_mul_tables::x_2#2 init_mul_tables::x_2#1 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:21 [ init_mul_tables::c#2 init_mul_tables::c#1 ] +Statement [125] (byte~) init_mul_tables::$5 ← < (word) init_mul_tables::sqr#3 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 init_mul_tables::$5 ] ( main:2::init_mul_tables:7 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 init_mul_tables::$5 ] ) always clobbers reg byte a +Statement [126] *((byte*) init_mul_tables::sqr1_lo#2) ← (byte~) init_mul_tables::$5 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 ] ( main:2::init_mul_tables:7 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 ] ) always clobbers reg byte y +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:21 [ init_mul_tables::c#2 init_mul_tables::c#1 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:26 [ init_mul_tables::x_2#3 init_mul_tables::x_2#2 init_mul_tables::x_2#1 ] +Statement [127] (byte~) init_mul_tables::$6 ← > (word) init_mul_tables::sqr#3 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 init_mul_tables::$6 ] ( main:2::init_mul_tables:7 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 init_mul_tables::$6 ] ) always clobbers reg byte a +Statement [128] *((byte*) init_mul_tables::sqr1_hi#2) ← (byte~) init_mul_tables::$6 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 ] ( main:2::init_mul_tables:7 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 ] ) always clobbers reg byte y +Statement [130] (word) init_mul_tables::sqr#1 ← (word) init_mul_tables::sqr#3 + (byte) init_mul_tables::x_2#2 [ init_mul_tables::sqr1_lo#2 init_mul_tables::c#1 init_mul_tables::sqr#1 init_mul_tables::sqr1_hi#1 init_mul_tables::x_2#2 ] ( main:2::init_mul_tables:7 [ init_mul_tables::sqr1_lo#2 init_mul_tables::c#1 init_mul_tables::sqr#1 init_mul_tables::sqr1_hi#1 init_mul_tables::x_2#2 ] ) always clobbers reg byte a +Statement [132] if((byte*) init_mul_tables::sqr1_lo#1!=(const byte[512]) mul_sqr1_lo#0+(word/signed word) 512) goto init_mul_tables::@1 [ init_mul_tables::c#1 init_mul_tables::sqr#1 init_mul_tables::sqr1_lo#1 init_mul_tables::sqr1_hi#1 init_mul_tables::x_2#2 ] ( main:2::init_mul_tables:7 [ init_mul_tables::c#1 init_mul_tables::sqr#1 init_mul_tables::sqr1_lo#1 init_mul_tables::sqr1_hi#1 init_mul_tables::x_2#2 ] ) always clobbers reg byte a +Statement [134] *((byte*) init_mul_tables::sqr2_lo#2) ← *((const byte[512]) mul_sqr1_lo#0 + (byte) init_mul_tables::x_255#2) [ init_mul_tables::x_255#2 init_mul_tables::sqr2_lo#2 init_mul_tables::sqr2_hi#2 init_mul_tables::dir#2 ] ( main:2::init_mul_tables:7 [ init_mul_tables::x_255#2 init_mul_tables::sqr2_lo#2 init_mul_tables::sqr2_hi#2 init_mul_tables::dir#2 ] ) always clobbers reg byte a reg byte y +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:29 [ init_mul_tables::x_255#2 init_mul_tables::x_255#1 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:29 [ init_mul_tables::x_255#2 init_mul_tables::x_255#1 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:34 [ init_mul_tables::dir#2 init_mul_tables::dir#3 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:34 [ init_mul_tables::dir#2 init_mul_tables::dir#3 ] +Statement [135] *((byte*) init_mul_tables::sqr2_hi#2) ← *((const byte[512]) mul_sqr1_hi#0 + (byte) init_mul_tables::x_255#2) [ init_mul_tables::x_255#2 init_mul_tables::sqr2_lo#2 init_mul_tables::sqr2_hi#2 init_mul_tables::dir#2 ] ( main:2::init_mul_tables:7 [ init_mul_tables::x_255#2 init_mul_tables::sqr2_lo#2 init_mul_tables::sqr2_hi#2 init_mul_tables::dir#2 ] ) always clobbers reg byte a reg byte y +Statement [137] (byte) init_mul_tables::x_255#1 ← (byte) init_mul_tables::x_255#2 + (byte) init_mul_tables::dir#2 [ init_mul_tables::sqr2_lo#2 init_mul_tables::dir#2 init_mul_tables::x_255#1 init_mul_tables::sqr2_hi#1 ] ( main:2::init_mul_tables:7 [ init_mul_tables::sqr2_lo#2 init_mul_tables::dir#2 init_mul_tables::x_255#1 init_mul_tables::sqr2_hi#1 ] ) always clobbers reg byte a +Statement [141] if((byte*) init_mul_tables::sqr2_lo#1!=(const byte[512]) mul_sqr2_lo#0+(word/signed word) 511) goto init_mul_tables::@3 [ init_mul_tables::x_255#1 init_mul_tables::sqr2_lo#1 init_mul_tables::sqr2_hi#1 init_mul_tables::dir#3 ] ( main:2::init_mul_tables:7 [ init_mul_tables::x_255#1 init_mul_tables::sqr2_lo#1 init_mul_tables::sqr2_hi#1 init_mul_tables::dir#3 ] ) always clobbers reg byte a +Statement [142] *((const byte[512]) mul_sqr2_lo#0+(word/signed word) 511) ← *((const byte[512]) mul_sqr1_lo#0+(word/signed word) 256) [ ] ( main:2::init_mul_tables:7 [ ] ) always clobbers reg byte a +Statement [143] *((const byte[512]) mul_sqr2_hi#0+(word/signed word) 511) ← *((const byte[512]) mul_sqr1_hi#0+(word/signed word) 256) [ ] ( main:2::init_mul_tables:7 [ ] ) always clobbers reg byte a +Statement [148] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] ) always clobbers reg byte a reg byte y +Statement [150] if((byte*) print_cls::sc#1!=(word/signed word) 1024+(word/signed word) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) always clobbers reg byte a +Statement [4] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 5 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [21] (word) slow_multiply::return#2 ← (word) slow_multiply::return#0 [ mul_results_compare::a#5 mul_results_compare::b#2 slow_multiply::return#2 line_cursor#17 char_cursor#20 ] ( main:2::mul_results_compare:13 [ mul_results_compare::a#5 mul_results_compare::b#2 slow_multiply::return#2 line_cursor#17 char_cursor#20 ] ) always clobbers reg byte a +Statement [22] (word) mul_results_compare::ms#0 ← (word) slow_multiply::return#2 [ mul_results_compare::a#5 mul_results_compare::b#2 mul_results_compare::ms#0 line_cursor#17 char_cursor#20 ] ( main:2::mul_results_compare:13 [ mul_results_compare::a#5 mul_results_compare::b#2 mul_results_compare::ms#0 line_cursor#17 char_cursor#20 ] ) always clobbers reg byte a +Statement [26] (word) asm_multiply::return#2 ← (word) asm_multiply::return#0 [ mul_results_compare::a#5 mul_results_compare::b#2 mul_results_compare::ms#0 asm_multiply::return#2 line_cursor#17 char_cursor#20 ] ( main:2::mul_results_compare:13 [ mul_results_compare::a#5 mul_results_compare::b#2 mul_results_compare::ms#0 asm_multiply::return#2 line_cursor#17 char_cursor#20 ] ) always clobbers reg byte a +Statement [27] (word) mul_results_compare::ma#0 ← (word) asm_multiply::return#2 [ mul_results_compare::a#5 mul_results_compare::b#2 mul_results_compare::ms#0 mul_results_compare::ma#0 line_cursor#17 char_cursor#20 ] ( main:2::mul_results_compare:13 [ mul_results_compare::a#5 mul_results_compare::b#2 mul_results_compare::ms#0 mul_results_compare::ma#0 line_cursor#17 char_cursor#20 ] ) always clobbers reg byte a +Statement [28] if((word) mul_results_compare::ms#0==(word) mul_results_compare::ma#0) goto mul_results_compare::@3 [ mul_results_compare::a#5 mul_results_compare::b#2 mul_results_compare::ms#0 mul_results_compare::ma#0 line_cursor#17 char_cursor#20 ] ( main:2::mul_results_compare:13 [ mul_results_compare::a#5 mul_results_compare::b#2 mul_results_compare::ms#0 mul_results_compare::ma#0 line_cursor#17 char_cursor#20 ] ) always clobbers reg byte a +Statement [29] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 2 [ mul_results_compare::ms#0 mul_results_compare::ma#0 line_cursor#17 char_cursor#20 ] ( main:2::mul_results_compare:13 [ mul_results_compare::ms#0 mul_results_compare::ma#0 line_cursor#17 char_cursor#20 ] ) always clobbers reg byte a +Statement [31] (word) print_word::w#2 ← (word) mul_results_compare::ms#0 [ mul_results_compare::ma#0 print_word::w#2 line_cursor#17 char_cursor#2 ] ( main:2::mul_results_compare:13 [ mul_results_compare::ma#0 print_word::w#2 line_cursor#17 char_cursor#2 ] ) always clobbers reg byte a +Statement [35] (word) print_word::w#3 ← (word) mul_results_compare::ma#0 [ print_word::w#3 line_cursor#17 char_cursor#2 ] ( main:2::mul_results_compare:13 [ print_word::w#3 line_cursor#17 char_cursor#2 ] ) always clobbers reg byte a +Statement [47] (byte*~) char_cursor#89 ← (byte*) line_cursor#1 [ char_cursor#89 line_cursor#1 ] ( main:2::mul_results_compare:13 [ char_cursor#89 line_cursor#1 ] ) always clobbers reg byte a +Statement [50] (byte*) line_cursor#1 ← (byte*) line_cursor#11 + (byte/signed byte/word/signed word) 40 [ line_cursor#1 char_cursor#2 ] ( main:2::mul_results_compare:13::print_ln:46 [ line_cursor#1 char_cursor#2 ] main:2::mul_tables_compare:11::print_ln:109 [ line_cursor#1 char_cursor#2 ] ) always clobbers reg byte a +Statement [51] if((byte*) line_cursor#1<(byte*) char_cursor#2) goto print_ln::@1 [ line_cursor#1 char_cursor#2 ] ( main:2::mul_results_compare:13::print_ln:46 [ line_cursor#1 char_cursor#2 ] main:2::mul_tables_compare:11::print_ln:109 [ line_cursor#1 char_cursor#2 ] ) always clobbers reg byte a +Statement [55] if(*((byte*) print_str::str#7)!=(byte) '@') goto print_str::@2 [ char_cursor#2 print_str::str#7 ] ( main:2::mul_results_compare:13::print_str:30 [ mul_results_compare::ms#0 mul_results_compare::ma#0 line_cursor#17 char_cursor#2 print_str::str#7 ] main:2::mul_results_compare:13::print_str:34 [ mul_results_compare::ma#0 line_cursor#17 char_cursor#2 print_str::str#7 ] main:2::mul_results_compare:13::print_str:44 [ line_cursor#17 char_cursor#2 print_str::str#7 ] main:2::mul_tables_compare:11::print_str:94 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 char_cursor#2 print_str::str#7 ] main:2::mul_tables_compare:11::print_str:98 [ mul_tables_compare::kc_sqr#2 char_cursor#2 print_str::str#7 ] main:2::mul_tables_compare:11::print_str:107 [ char_cursor#2 print_str::str#7 ] ) always clobbers reg byte a reg byte y +Statement [57] *((byte*) char_cursor#2) ← *((byte*) print_str::str#7) [ char_cursor#2 print_str::str#7 ] ( main:2::mul_results_compare:13::print_str:30 [ mul_results_compare::ms#0 mul_results_compare::ma#0 line_cursor#17 char_cursor#2 print_str::str#7 ] main:2::mul_results_compare:13::print_str:34 [ mul_results_compare::ma#0 line_cursor#17 char_cursor#2 print_str::str#7 ] main:2::mul_results_compare:13::print_str:44 [ line_cursor#17 char_cursor#2 print_str::str#7 ] main:2::mul_tables_compare:11::print_str:94 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 char_cursor#2 print_str::str#7 ] main:2::mul_tables_compare:11::print_str:98 [ mul_tables_compare::kc_sqr#2 char_cursor#2 print_str::str#7 ] main:2::mul_tables_compare:11::print_str:107 [ char_cursor#2 print_str::str#7 ] ) always clobbers reg byte a reg byte y +Statement [61] (byte) print_byte::b#0 ← > (word) print_word::w#4 [ char_cursor#2 print_word::w#4 print_byte::b#0 ] ( main:2::mul_results_compare:13::print_word:32 [ mul_results_compare::ma#0 line_cursor#17 char_cursor#2 print_word::w#4 print_byte::b#0 ] main:2::mul_results_compare:13::print_word:36 [ line_cursor#17 char_cursor#2 print_word::w#4 print_byte::b#0 ] main:2::mul_tables_compare:11::print_word:96 [ mul_tables_compare::kc_sqr#2 char_cursor#2 print_word::w#4 print_byte::b#0 ] main:2::mul_tables_compare:11::print_word:100 [ char_cursor#2 print_word::w#4 print_byte::b#0 ] ) always clobbers reg byte a +Statement [63] (byte) print_byte::b#1 ← < (word) print_word::w#4 [ char_cursor#11 print_byte::b#1 ] ( main:2::mul_results_compare:13::print_word:32 [ mul_results_compare::ma#0 line_cursor#17 char_cursor#11 print_byte::b#1 ] main:2::mul_results_compare:13::print_word:36 [ line_cursor#17 char_cursor#11 print_byte::b#1 ] main:2::mul_tables_compare:11::print_word:96 [ mul_tables_compare::kc_sqr#2 char_cursor#11 print_byte::b#1 ] main:2::mul_tables_compare:11::print_word:100 [ char_cursor#11 print_byte::b#1 ] ) always clobbers reg byte a +Statement [70] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word) 15 [ char_cursor#11 print_byte::$2 ] ( main:2::mul_results_compare:13::print_word:32::print_byte:62 [ mul_results_compare::ma#0 line_cursor#17 print_word::w#4 char_cursor#11 print_byte::$2 ] main:2::mul_results_compare:13::print_word:36::print_byte:62 [ line_cursor#17 print_word::w#4 char_cursor#11 print_byte::$2 ] main:2::mul_tables_compare:11::print_word:96::print_byte:62 [ mul_tables_compare::kc_sqr#2 print_word::w#4 char_cursor#11 print_byte::$2 ] main:2::mul_tables_compare:11::print_word:100::print_byte:62 [ print_word::w#4 char_cursor#11 print_byte::$2 ] main:2::mul_results_compare:13::print_word:32::print_byte:64 [ mul_results_compare::ma#0 line_cursor#17 char_cursor#11 print_byte::$2 ] main:2::mul_results_compare:13::print_word:36::print_byte:64 [ line_cursor#17 char_cursor#11 print_byte::$2 ] main:2::mul_tables_compare:11::print_word:96::print_byte:64 [ mul_tables_compare::kc_sqr#2 char_cursor#11 print_byte::$2 ] main:2::mul_tables_compare:11::print_word:100::print_byte:64 [ char_cursor#11 print_byte::$2 ] ) always clobbers reg byte a +Statement [75] *((byte*) char_cursor#41) ← (byte) print_char::ch#2 [ char_cursor#41 ] ( main:2::mul_results_compare:13::print_word:32::print_byte:62::print_char:69 [ mul_results_compare::ma#0 line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#41 ] main:2::mul_results_compare:13::print_word:36::print_byte:62::print_char:69 [ line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#41 ] main:2::mul_tables_compare:11::print_word:96::print_byte:62::print_char:69 [ mul_tables_compare::kc_sqr#2 print_word::w#4 print_byte::b#2 char_cursor#41 ] main:2::mul_tables_compare:11::print_word:100::print_byte:62::print_char:69 [ print_word::w#4 print_byte::b#2 char_cursor#41 ] main:2::mul_results_compare:13::print_word:32::print_byte:64::print_char:69 [ mul_results_compare::ma#0 line_cursor#17 print_byte::b#2 char_cursor#41 ] main:2::mul_results_compare:13::print_word:36::print_byte:64::print_char:69 [ line_cursor#17 print_byte::b#2 char_cursor#41 ] main:2::mul_tables_compare:11::print_word:96::print_byte:64::print_char:69 [ mul_tables_compare::kc_sqr#2 print_byte::b#2 char_cursor#41 ] main:2::mul_tables_compare:11::print_word:100::print_byte:64::print_char:69 [ print_byte::b#2 char_cursor#41 ] main:2::mul_results_compare:13::print_word:32::print_byte:62::print_char:72 [ mul_results_compare::ma#0 line_cursor#17 print_word::w#4 char_cursor#41 ] main:2::mul_results_compare:13::print_word:36::print_byte:62::print_char:72 [ line_cursor#17 print_word::w#4 char_cursor#41 ] main:2::mul_tables_compare:11::print_word:96::print_byte:62::print_char:72 [ mul_tables_compare::kc_sqr#2 print_word::w#4 char_cursor#41 ] main:2::mul_tables_compare:11::print_word:100::print_byte:62::print_char:72 [ print_word::w#4 char_cursor#41 ] main:2::mul_results_compare:13::print_word:32::print_byte:64::print_char:72 [ mul_results_compare::ma#0 line_cursor#17 char_cursor#41 ] main:2::mul_results_compare:13::print_word:36::print_byte:64::print_char:72 [ line_cursor#17 char_cursor#41 ] main:2::mul_tables_compare:11::print_word:96::print_byte:64::print_char:72 [ mul_tables_compare::kc_sqr#2 char_cursor#41 ] main:2::mul_tables_compare:11::print_word:100::print_byte:64::print_char:72 [ char_cursor#41 ] ) always clobbers reg byte y +Statement asm { ldamemAstasm1+1stasm3+1eor#$ffstasm2+1stasm4+1ldxmemBsecsm1:ldaasm_mul_sqr1_lo,xsm2:sbcasm_mul_sqr2_lo,xstamemAsm3:ldaasm_mul_sqr1_hi,xsm4:sbcasm_mul_sqr2_hi,xstamemB } always clobbers reg byte a reg byte x +Statement [81] (word) asm_multiply::return#0 ← *((const byte*) asm_multiply::memB#0) w= *((const byte*) asm_multiply::memA#0) [ asm_multiply::return#0 ] ( main:2::mul_results_compare:13::asm_multiply:25 [ mul_results_compare::a#5 mul_results_compare::b#2 mul_results_compare::ms#0 line_cursor#17 char_cursor#20 asm_multiply::return#0 ] ) always clobbers reg byte a +Potential register analysis [83] if(slow_multiply::a#0<=0) goto slow_multiply::@1 missing fragment vbuxx_le_0_then_la1 allocation: reg byte x [ slow_multiply::a#0 ] +Potential register analysis [83] if(slow_multiply::a#0<=0) goto slow_multiply::@1 missing fragment vbuyy_le_0_then_la1 allocation: reg byte y [ slow_multiply::a#0 ] +MISSING FRAGMENTS + vbuxx_le_0_then_la1 + vbuyy_le_0_then_la1 +Statement [83] if((byte) slow_multiply::a#0<=(byte/signed byte/word/signed word) 0) goto slow_multiply::@1 [ slow_multiply::a#0 slow_multiply::b#0 ] ( main:2::mul_results_compare:13::slow_multiply:20 [ mul_results_compare::a#5 mul_results_compare::b#2 line_cursor#17 char_cursor#20 slow_multiply::a#0 slow_multiply::b#0 ] ) always clobbers reg byte a +Statement [85] (word) slow_multiply::m#1 ← (word) slow_multiply::m#3 + (byte) slow_multiply::b#0 [ slow_multiply::a#0 slow_multiply::b#0 slow_multiply::i#2 slow_multiply::m#1 ] ( main:2::mul_results_compare:13::slow_multiply:20 [ mul_results_compare::a#5 mul_results_compare::b#2 line_cursor#17 char_cursor#20 slow_multiply::a#0 slow_multiply::b#0 slow_multiply::i#2 slow_multiply::m#1 ] ) always clobbers reg byte a +Statement [92] if(*((byte*) mul_tables_compare::kc_sqr#2)==*((byte*) mul_tables_compare::asm_sqr#2)) goto mul_tables_compare::@2 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 ] ( main:2::mul_tables_compare:11 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 ] ) always clobbers reg byte a reg byte y +Statement [93] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 2 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 ] ( main:2::mul_tables_compare:11 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 ] ) always clobbers reg byte a +Statement [95] (word) print_word::w#0 ← ((word)) (byte*) mul_tables_compare::asm_sqr#2 [ char_cursor#2 print_word::w#0 mul_tables_compare::kc_sqr#2 ] ( main:2::mul_tables_compare:11 [ char_cursor#2 print_word::w#0 mul_tables_compare::kc_sqr#2 ] ) always clobbers reg byte a +Statement [99] (word) print_word::w#1 ← ((word)) (byte*) mul_tables_compare::kc_sqr#2 [ char_cursor#2 print_word::w#1 ] ( main:2::mul_tables_compare:11 [ char_cursor#2 print_word::w#1 ] ) always clobbers reg byte a +Statement [105] if((byte*) mul_tables_compare::kc_sqr#1<(const byte[512]) mul_sqr1_lo#0+(word/signed word) 512*(byte/signed byte/word/signed word) 4) goto mul_tables_compare::@1 [ mul_tables_compare::kc_sqr#1 mul_tables_compare::asm_sqr#1 ] ( main:2::mul_tables_compare:11 [ mul_tables_compare::kc_sqr#1 mul_tables_compare::asm_sqr#1 ] ) always clobbers reg byte a +Statement [110] (byte*~) char_cursor#100 ← (byte*) line_cursor#1 [ line_cursor#1 char_cursor#100 ] ( main:2::mul_tables_compare:11 [ line_cursor#1 char_cursor#100 ] ) always clobbers reg byte a Statement asm { ldx#$00txa.byte$c9lb1:tyaadc#$00ml1:staasm_mul_sqr1_hi,xtaycmp#$40txarorml9:adc#$00staml9+1inxml0:staasm_mul_sqr1_lo,xbnelb1incml0+2incml1+2clcinybnelb1ldx#$00ldy#$ff!:ldaasm_mul_sqr1_hi+1,xstaasm_mul_sqr2_hi+$100,xldaasm_mul_sqr1_hi,xstaasm_mul_sqr2_hi,yldaasm_mul_sqr1_lo+1,xstaasm_mul_sqr2_lo+$100,xldaasm_mul_sqr1_lo,xstaasm_mul_sqr2_lo,ydeyinxbne!- } always clobbers reg byte a reg byte x reg byte y -Statement [61] *((const byte*) init_mul_tables_asm::mem#0) ← *((const byte[512]) asm_mul_sqr1_lo#0) [ ] ( main:2::init_mul_tables_asm:7 [ ] ) always clobbers reg byte a -Statement [62] *((const byte*) init_mul_tables_asm::mem#0) ← *((const byte[512]) asm_mul_sqr1_hi#0) [ ] ( main:2::init_mul_tables_asm:7 [ ] ) always clobbers reg byte a -Statement [63] *((const byte*) init_mul_tables_asm::mem#0) ← *((const byte[512]) asm_mul_sqr2_lo#0) [ ] ( main:2::init_mul_tables_asm:7 [ ] ) always clobbers reg byte a -Statement [64] *((const byte*) init_mul_tables_asm::mem#0) ← *((const byte[512]) asm_mul_sqr2_hi#0) [ ] ( main:2::init_mul_tables_asm:7 [ ] ) always clobbers reg byte a -Statement [69] (byte~) init_mul_tables::$2 ← (byte) init_mul_tables::c#1 & (byte/signed byte/word/signed word) 1 [ init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::x_2#3 init_mul_tables::c#1 init_mul_tables::$2 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::x_2#3 init_mul_tables::c#1 init_mul_tables::$2 ] ) always clobbers reg byte a -Statement [74] (byte~) init_mul_tables::$5 ← < (word) init_mul_tables::sqr#3 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 init_mul_tables::$5 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 init_mul_tables::$5 ] ) always clobbers reg byte a -Statement [75] *((byte*) init_mul_tables::sqr1_lo#2) ← (byte~) init_mul_tables::$5 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 ] ) always clobbers reg byte y -Statement [76] (byte~) init_mul_tables::$6 ← > (word) init_mul_tables::sqr#3 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 init_mul_tables::$6 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 init_mul_tables::$6 ] ) always clobbers reg byte a -Statement [77] *((byte*) init_mul_tables::sqr1_hi#2) ← (byte~) init_mul_tables::$6 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 ] ) always clobbers reg byte y -Statement [79] (word) init_mul_tables::sqr#1 ← (word) init_mul_tables::sqr#3 + (byte) init_mul_tables::x_2#2 [ init_mul_tables::sqr1_lo#2 init_mul_tables::c#1 init_mul_tables::sqr#1 init_mul_tables::sqr1_hi#1 init_mul_tables::x_2#2 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr1_lo#2 init_mul_tables::c#1 init_mul_tables::sqr#1 init_mul_tables::sqr1_hi#1 init_mul_tables::x_2#2 ] ) always clobbers reg byte a -Statement [81] if((byte*) init_mul_tables::sqr1_lo#1!=(const byte[512]) mul_sqr1_lo#0+(word/signed word) 512) goto init_mul_tables::@1 [ init_mul_tables::c#1 init_mul_tables::sqr#1 init_mul_tables::sqr1_lo#1 init_mul_tables::sqr1_hi#1 init_mul_tables::x_2#2 ] ( main:2::init_mul_tables:5 [ init_mul_tables::c#1 init_mul_tables::sqr#1 init_mul_tables::sqr1_lo#1 init_mul_tables::sqr1_hi#1 init_mul_tables::x_2#2 ] ) always clobbers reg byte a -Statement [83] *((byte*) init_mul_tables::sqr2_lo#2) ← *((const byte[512]) mul_sqr1_lo#0 + (byte) init_mul_tables::x_255#2) [ init_mul_tables::x_255#2 init_mul_tables::sqr2_lo#2 init_mul_tables::sqr2_hi#2 init_mul_tables::dir#2 ] ( main:2::init_mul_tables:5 [ init_mul_tables::x_255#2 init_mul_tables::sqr2_lo#2 init_mul_tables::sqr2_hi#2 init_mul_tables::dir#2 ] ) always clobbers reg byte a reg byte y -Statement [84] *((byte*) init_mul_tables::sqr2_hi#2) ← *((const byte[512]) mul_sqr1_hi#0 + (byte) init_mul_tables::x_255#2) [ init_mul_tables::x_255#2 init_mul_tables::sqr2_lo#2 init_mul_tables::sqr2_hi#2 init_mul_tables::dir#2 ] ( main:2::init_mul_tables:5 [ init_mul_tables::x_255#2 init_mul_tables::sqr2_lo#2 init_mul_tables::sqr2_hi#2 init_mul_tables::dir#2 ] ) always clobbers reg byte a reg byte y -Statement [86] (byte) init_mul_tables::x_255#1 ← (byte) init_mul_tables::x_255#2 + (byte) init_mul_tables::dir#2 [ init_mul_tables::sqr2_lo#2 init_mul_tables::dir#2 init_mul_tables::x_255#1 init_mul_tables::sqr2_hi#1 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr2_lo#2 init_mul_tables::dir#2 init_mul_tables::x_255#1 init_mul_tables::sqr2_hi#1 ] ) always clobbers reg byte a -Statement [90] if((byte*) init_mul_tables::sqr2_lo#1!=(const byte[512]) mul_sqr2_lo#0+(word/signed word) 511) goto init_mul_tables::@3 [ init_mul_tables::x_255#1 init_mul_tables::sqr2_lo#1 init_mul_tables::sqr2_hi#1 init_mul_tables::dir#3 ] ( main:2::init_mul_tables:5 [ init_mul_tables::x_255#1 init_mul_tables::sqr2_lo#1 init_mul_tables::sqr2_hi#1 init_mul_tables::dir#3 ] ) always clobbers reg byte a -Statement [91] *((const byte[512]) mul_sqr2_lo#0+(word/signed word) 511) ← *((const byte[512]) mul_sqr1_lo#0+(word/signed word) 256) [ ] ( main:2::init_mul_tables:5 [ ] ) always clobbers reg byte a -Statement [92] *((const byte[512]) mul_sqr2_hi#0+(word/signed word) 511) ← *((const byte[512]) mul_sqr1_hi#0+(word/signed word) 256) [ ] ( main:2::init_mul_tables:5 [ ] ) always clobbers reg byte a -Potential registers zp ZP_WORD:2 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::kc_sqr#1 ] : zp ZP_WORD:2 , -Potential registers zp ZP_WORD:4 [ mul_tables_compare::asm_sqr#2 mul_tables_compare::asm_sqr#1 ] : zp ZP_WORD:4 , -Potential registers zp ZP_WORD:6 [ print_word::w#2 print_word::w#0 print_word::w#1 ] : zp ZP_WORD:6 , -Potential registers zp ZP_BYTE:8 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] : zp ZP_BYTE:8 , reg byte a , reg byte x , -Potential registers zp ZP_BYTE:9 [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] : zp ZP_BYTE:9 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:10 [ char_cursor#44 char_cursor#27 char_cursor#39 char_cursor#19 char_cursor#17 char_cursor#10 char_cursor#1 ] : zp ZP_WORD:10 , -Potential registers zp ZP_WORD:12 [ print_str::str#3 print_str::str#5 print_str::str#0 ] : zp ZP_WORD:12 , -Potential registers zp ZP_WORD:14 [ print_cls::sc#2 print_cls::sc#1 ] : zp ZP_WORD:14 , -Potential registers zp ZP_BYTE:16 [ init_mul_tables::c#2 init_mul_tables::c#1 ] : zp ZP_BYTE:16 , reg byte x , -Potential registers zp ZP_WORD:17 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_lo#1 ] : zp ZP_WORD:17 , -Potential registers zp ZP_WORD:19 [ init_mul_tables::sqr1_hi#2 init_mul_tables::sqr1_hi#1 ] : zp ZP_WORD:19 , -Potential registers zp ZP_BYTE:21 [ init_mul_tables::x_2#3 init_mul_tables::x_2#2 init_mul_tables::x_2#1 ] : zp ZP_BYTE:21 , reg byte x , -Potential registers zp ZP_WORD:22 [ init_mul_tables::sqr#3 init_mul_tables::sqr#4 init_mul_tables::sqr#1 init_mul_tables::sqr#2 ] : zp ZP_WORD:22 , -Potential registers zp ZP_BYTE:24 [ init_mul_tables::x_255#2 init_mul_tables::x_255#1 ] : zp ZP_BYTE:24 , reg byte x , -Potential registers zp ZP_WORD:25 [ init_mul_tables::sqr2_lo#2 init_mul_tables::sqr2_lo#1 ] : zp ZP_WORD:25 , -Potential registers zp ZP_WORD:27 [ init_mul_tables::sqr2_hi#2 init_mul_tables::sqr2_hi#1 ] : zp ZP_WORD:27 , -Potential registers zp ZP_BYTE:29 [ init_mul_tables::dir#2 init_mul_tables::dir#3 ] : zp ZP_BYTE:29 , reg byte x , -Potential registers zp ZP_BYTE:30 [ print_byte::$0 ] : zp ZP_BYTE:30 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:31 [ print_byte::$2 ] : zp ZP_BYTE:31 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:32 [ init_mul_tables::$2 ] : zp ZP_BYTE:32 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:33 [ init_mul_tables::$5 ] : zp ZP_BYTE:33 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:34 [ init_mul_tables::$6 ] : zp ZP_BYTE:34 , reg byte a , reg byte x , reg byte y , +Statement [112] *((const byte*) init_mul_tables_asm::mem#0) ← *((const byte[512]) asm_mul_sqr1_lo#0) [ ] ( main:2::init_mul_tables_asm:9 [ ] ) always clobbers reg byte a +Statement [113] *((const byte*) init_mul_tables_asm::mem#0) ← *((const byte[512]) asm_mul_sqr1_hi#0) [ ] ( main:2::init_mul_tables_asm:9 [ ] ) always clobbers reg byte a +Statement [114] *((const byte*) init_mul_tables_asm::mem#0) ← *((const byte[512]) asm_mul_sqr2_lo#0) [ ] ( main:2::init_mul_tables_asm:9 [ ] ) always clobbers reg byte a +Statement [115] *((const byte*) init_mul_tables_asm::mem#0) ← *((const byte[512]) asm_mul_sqr2_hi#0) [ ] ( main:2::init_mul_tables_asm:9 [ ] ) always clobbers reg byte a +Statement [120] (byte~) init_mul_tables::$2 ← (byte) init_mul_tables::c#1 & (byte/signed byte/word/signed word) 1 [ init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::x_2#3 init_mul_tables::c#1 init_mul_tables::$2 ] ( main:2::init_mul_tables:7 [ init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::x_2#3 init_mul_tables::c#1 init_mul_tables::$2 ] ) always clobbers reg byte a +Statement [125] (byte~) init_mul_tables::$5 ← < (word) init_mul_tables::sqr#3 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 init_mul_tables::$5 ] ( main:2::init_mul_tables:7 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 init_mul_tables::$5 ] ) always clobbers reg byte a +Statement [126] *((byte*) init_mul_tables::sqr1_lo#2) ← (byte~) init_mul_tables::$5 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 ] ( main:2::init_mul_tables:7 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 ] ) always clobbers reg byte y +Statement [127] (byte~) init_mul_tables::$6 ← > (word) init_mul_tables::sqr#3 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 init_mul_tables::$6 ] ( main:2::init_mul_tables:7 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 init_mul_tables::$6 ] ) always clobbers reg byte a +Statement [128] *((byte*) init_mul_tables::sqr1_hi#2) ← (byte~) init_mul_tables::$6 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 ] ( main:2::init_mul_tables:7 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 ] ) always clobbers reg byte y +Statement [130] (word) init_mul_tables::sqr#1 ← (word) init_mul_tables::sqr#3 + (byte) init_mul_tables::x_2#2 [ init_mul_tables::sqr1_lo#2 init_mul_tables::c#1 init_mul_tables::sqr#1 init_mul_tables::sqr1_hi#1 init_mul_tables::x_2#2 ] ( main:2::init_mul_tables:7 [ init_mul_tables::sqr1_lo#2 init_mul_tables::c#1 init_mul_tables::sqr#1 init_mul_tables::sqr1_hi#1 init_mul_tables::x_2#2 ] ) always clobbers reg byte a +Statement [132] if((byte*) init_mul_tables::sqr1_lo#1!=(const byte[512]) mul_sqr1_lo#0+(word/signed word) 512) goto init_mul_tables::@1 [ init_mul_tables::c#1 init_mul_tables::sqr#1 init_mul_tables::sqr1_lo#1 init_mul_tables::sqr1_hi#1 init_mul_tables::x_2#2 ] ( main:2::init_mul_tables:7 [ init_mul_tables::c#1 init_mul_tables::sqr#1 init_mul_tables::sqr1_lo#1 init_mul_tables::sqr1_hi#1 init_mul_tables::x_2#2 ] ) always clobbers reg byte a +Statement [134] *((byte*) init_mul_tables::sqr2_lo#2) ← *((const byte[512]) mul_sqr1_lo#0 + (byte) init_mul_tables::x_255#2) [ init_mul_tables::x_255#2 init_mul_tables::sqr2_lo#2 init_mul_tables::sqr2_hi#2 init_mul_tables::dir#2 ] ( main:2::init_mul_tables:7 [ init_mul_tables::x_255#2 init_mul_tables::sqr2_lo#2 init_mul_tables::sqr2_hi#2 init_mul_tables::dir#2 ] ) always clobbers reg byte a reg byte y +Statement [135] *((byte*) init_mul_tables::sqr2_hi#2) ← *((const byte[512]) mul_sqr1_hi#0 + (byte) init_mul_tables::x_255#2) [ init_mul_tables::x_255#2 init_mul_tables::sqr2_lo#2 init_mul_tables::sqr2_hi#2 init_mul_tables::dir#2 ] ( main:2::init_mul_tables:7 [ init_mul_tables::x_255#2 init_mul_tables::sqr2_lo#2 init_mul_tables::sqr2_hi#2 init_mul_tables::dir#2 ] ) always clobbers reg byte a reg byte y +Statement [137] (byte) init_mul_tables::x_255#1 ← (byte) init_mul_tables::x_255#2 + (byte) init_mul_tables::dir#2 [ init_mul_tables::sqr2_lo#2 init_mul_tables::dir#2 init_mul_tables::x_255#1 init_mul_tables::sqr2_hi#1 ] ( main:2::init_mul_tables:7 [ init_mul_tables::sqr2_lo#2 init_mul_tables::dir#2 init_mul_tables::x_255#1 init_mul_tables::sqr2_hi#1 ] ) always clobbers reg byte a +Statement [141] if((byte*) init_mul_tables::sqr2_lo#1!=(const byte[512]) mul_sqr2_lo#0+(word/signed word) 511) goto init_mul_tables::@3 [ init_mul_tables::x_255#1 init_mul_tables::sqr2_lo#1 init_mul_tables::sqr2_hi#1 init_mul_tables::dir#3 ] ( main:2::init_mul_tables:7 [ init_mul_tables::x_255#1 init_mul_tables::sqr2_lo#1 init_mul_tables::sqr2_hi#1 init_mul_tables::dir#3 ] ) always clobbers reg byte a +Statement [142] *((const byte[512]) mul_sqr2_lo#0+(word/signed word) 511) ← *((const byte[512]) mul_sqr1_lo#0+(word/signed word) 256) [ ] ( main:2::init_mul_tables:7 [ ] ) always clobbers reg byte a +Statement [143] *((const byte[512]) mul_sqr2_hi#0+(word/signed word) 511) ← *((const byte[512]) mul_sqr1_hi#0+(word/signed word) 256) [ ] ( main:2::init_mul_tables:7 [ ] ) always clobbers reg byte a +Statement [148] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] ) always clobbers reg byte a reg byte y +Statement [150] if((byte*) print_cls::sc#1!=(word/signed word) 1024+(word/signed word) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) always clobbers reg byte a +Potential registers zp ZP_BYTE:2 [ mul_results_compare::a#5 mul_results_compare::a#1 ] : zp ZP_BYTE:2 , reg byte y , +Potential registers zp ZP_BYTE:3 [ mul_results_compare::b#2 mul_results_compare::b#1 ] : zp ZP_BYTE:3 , reg byte y , +Potential registers zp ZP_WORD:4 [ line_cursor#11 line_cursor#22 line_cursor#19 line_cursor#17 line_cursor#1 ] : zp ZP_WORD:4 , +Potential registers zp ZP_WORD:6 [ print_str::str#7 print_str::str#9 print_str::str#0 ] : zp ZP_WORD:6 , +Potential registers zp ZP_WORD:8 [ print_word::w#4 print_word::w#2 print_word::w#3 print_word::w#0 print_word::w#1 ] : zp ZP_WORD:8 , +Potential registers zp ZP_BYTE:10 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] : zp ZP_BYTE:10 , reg byte a , reg byte x , +Potential registers zp ZP_BYTE:11 [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] : zp ZP_BYTE:11 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:12 [ char_cursor#41 char_cursor#64 char_cursor#2 char_cursor#71 char_cursor#27 char_cursor#11 char_cursor#89 char_cursor#20 char_cursor#1 char_cursor#100 ] : zp ZP_WORD:12 , +Potential registers zp ZP_BYTE:14 [ slow_multiply::i#2 slow_multiply::i#1 ] : zp ZP_BYTE:14 , reg byte x , reg byte y , +Potential registers zp ZP_WORD:15 [ slow_multiply::return#0 slow_multiply::m#3 slow_multiply::m#1 ] : zp ZP_WORD:15 , +Potential registers zp ZP_WORD:17 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::kc_sqr#1 ] : zp ZP_WORD:17 , +Potential registers zp ZP_WORD:19 [ mul_tables_compare::asm_sqr#2 mul_tables_compare::asm_sqr#1 ] : zp ZP_WORD:19 , +Potential registers zp ZP_BYTE:21 [ init_mul_tables::c#2 init_mul_tables::c#1 ] : zp ZP_BYTE:21 , reg byte x , +Potential registers zp ZP_WORD:22 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_lo#1 ] : zp ZP_WORD:22 , +Potential registers zp ZP_WORD:24 [ init_mul_tables::sqr1_hi#2 init_mul_tables::sqr1_hi#1 ] : zp ZP_WORD:24 , +Potential registers zp ZP_BYTE:26 [ init_mul_tables::x_2#3 init_mul_tables::x_2#2 init_mul_tables::x_2#1 ] : zp ZP_BYTE:26 , reg byte x , +Potential registers zp ZP_WORD:27 [ init_mul_tables::sqr#3 init_mul_tables::sqr#4 init_mul_tables::sqr#1 init_mul_tables::sqr#2 ] : zp ZP_WORD:27 , +Potential registers zp ZP_BYTE:29 [ init_mul_tables::x_255#2 init_mul_tables::x_255#1 ] : zp ZP_BYTE:29 , reg byte x , +Potential registers zp ZP_WORD:30 [ init_mul_tables::sqr2_lo#2 init_mul_tables::sqr2_lo#1 ] : zp ZP_WORD:30 , +Potential registers zp ZP_WORD:32 [ init_mul_tables::sqr2_hi#2 init_mul_tables::sqr2_hi#1 ] : zp ZP_WORD:32 , +Potential registers zp ZP_BYTE:34 [ init_mul_tables::dir#2 init_mul_tables::dir#3 ] : zp ZP_BYTE:34 , reg byte x , +Potential registers zp ZP_WORD:35 [ print_cls::sc#2 print_cls::sc#1 ] : zp ZP_WORD:35 , +Potential registers zp ZP_BYTE:37 [ slow_multiply::a#0 ] : zp ZP_BYTE:37 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:38 [ slow_multiply::b#0 ] : zp ZP_BYTE:38 , reg byte x , reg byte y , +Potential registers zp ZP_WORD:39 [ slow_multiply::return#2 ] : zp ZP_WORD:39 , +Potential registers zp ZP_WORD:41 [ mul_results_compare::ms#0 ] : zp ZP_WORD:41 , +Potential registers zp ZP_BYTE:43 [ asm_multiply::a#0 ] : zp ZP_BYTE:43 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:44 [ asm_multiply::b#0 ] : zp ZP_BYTE:44 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:45 [ asm_multiply::return#2 ] : zp ZP_WORD:45 , +Potential registers zp ZP_WORD:47 [ mul_results_compare::ma#0 ] : zp ZP_WORD:47 , +Potential registers zp ZP_BYTE:49 [ print_byte::$0 ] : zp ZP_BYTE:49 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:50 [ print_byte::$2 ] : zp ZP_BYTE:50 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:51 [ asm_multiply::return#0 ] : zp ZP_WORD:51 , +Potential registers zp ZP_BYTE:53 [ init_mul_tables::$2 ] : zp ZP_BYTE:53 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:54 [ init_mul_tables::$5 ] : zp ZP_BYTE:54 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:55 [ init_mul_tables::$6 ] : zp ZP_BYTE:55 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [init_mul_tables] 45.1: zp ZP_WORD:22 [ init_mul_tables::sqr#3 init_mul_tables::sqr#4 init_mul_tables::sqr#1 init_mul_tables::sqr#2 ] 24.36: zp ZP_BYTE:16 [ init_mul_tables::c#2 init_mul_tables::c#1 ] 24.14: zp ZP_BYTE:21 [ init_mul_tables::x_2#3 init_mul_tables::x_2#2 init_mul_tables::x_2#1 ] 22: zp ZP_BYTE:32 [ init_mul_tables::$2 ] 22: zp ZP_BYTE:33 [ init_mul_tables::$5 ] 22: zp ZP_BYTE:34 [ init_mul_tables::$6 ] 20.62: zp ZP_WORD:25 [ init_mul_tables::sqr2_lo#2 init_mul_tables::sqr2_lo#1 ] 19.04: zp ZP_WORD:17 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_lo#1 ] 16.5: zp ZP_BYTE:24 [ init_mul_tables::x_255#2 init_mul_tables::x_255#1 ] 14.14: zp ZP_WORD:27 [ init_mul_tables::sqr2_hi#2 init_mul_tables::sqr2_hi#1 ] 12.05: zp ZP_BYTE:29 [ init_mul_tables::dir#2 init_mul_tables::dir#3 ] 8.5: zp ZP_WORD:19 [ init_mul_tables::sqr1_hi#2 init_mul_tables::sqr1_hi#1 ] -Uplift Scope [] 45.41: zp ZP_WORD:10 [ char_cursor#44 char_cursor#27 char_cursor#39 char_cursor#19 char_cursor#17 char_cursor#10 char_cursor#1 ] -Uplift Scope [print_str] 35.5: zp ZP_WORD:12 [ print_str::str#3 print_str::str#5 print_str::str#0 ] -Uplift Scope [print_cls] 33: zp ZP_WORD:14 [ print_cls::sc#2 print_cls::sc#1 ] -Uplift Scope [mul_tables_compare] 19.68: zp ZP_WORD:2 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::kc_sqr#1 ] 13.17: zp ZP_WORD:4 [ mul_tables_compare::asm_sqr#2 mul_tables_compare::asm_sqr#1 ] -Uplift Scope [print_byte] 10: zp ZP_BYTE:8 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] 4: zp ZP_BYTE:30 [ print_byte::$0 ] 4: zp ZP_BYTE:31 [ print_byte::$2 ] -Uplift Scope [print_char] 14: zp ZP_BYTE:9 [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] -Uplift Scope [print_word] 10.67: zp ZP_WORD:6 [ print_word::w#2 print_word::w#0 print_word::w#1 ] +Uplift Scope [slow_multiply] 3,370.33: zp ZP_WORD:15 [ slow_multiply::return#0 slow_multiply::m#3 slow_multiply::m#1 ] 2,502.5: zp ZP_BYTE:14 [ slow_multiply::i#2 slow_multiply::i#1 ] 202: zp ZP_WORD:39 [ slow_multiply::return#2 ] 183.67: zp ZP_BYTE:38 [ slow_multiply::b#0 ] 157.71: zp ZP_BYTE:37 [ slow_multiply::a#0 ] +Uplift Scope [asm_multiply] 202: zp ZP_WORD:45 [ asm_multiply::return#2 ] 51.5: zp ZP_BYTE:43 [ asm_multiply::a#0 ] 51.5: zp ZP_BYTE:44 [ asm_multiply::b#0 ] 34.33: zp ZP_WORD:51 [ asm_multiply::return#0 ] +Uplift Scope [mul_results_compare] 185.17: zp ZP_BYTE:3 [ mul_results_compare::b#2 mul_results_compare::b#1 ] 31.43: zp ZP_BYTE:2 [ mul_results_compare::a#5 mul_results_compare::a#1 ] 25.5: zp ZP_WORD:47 [ mul_results_compare::ma#0 ] 22.67: zp ZP_WORD:41 [ mul_results_compare::ms#0 ] +Uplift Scope [init_mul_tables] 45.1: zp ZP_WORD:27 [ init_mul_tables::sqr#3 init_mul_tables::sqr#4 init_mul_tables::sqr#1 init_mul_tables::sqr#2 ] 24.36: zp ZP_BYTE:21 [ init_mul_tables::c#2 init_mul_tables::c#1 ] 24.14: zp ZP_BYTE:26 [ init_mul_tables::x_2#3 init_mul_tables::x_2#2 init_mul_tables::x_2#1 ] 22: zp ZP_BYTE:53 [ init_mul_tables::$2 ] 22: zp ZP_BYTE:54 [ init_mul_tables::$5 ] 22: zp ZP_BYTE:55 [ init_mul_tables::$6 ] 20.62: zp ZP_WORD:30 [ init_mul_tables::sqr2_lo#2 init_mul_tables::sqr2_lo#1 ] 19.04: zp ZP_WORD:22 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_lo#1 ] 16.5: zp ZP_BYTE:29 [ init_mul_tables::x_255#2 init_mul_tables::x_255#1 ] 14.14: zp ZP_WORD:32 [ init_mul_tables::sqr2_hi#2 init_mul_tables::sqr2_hi#1 ] 12.05: zp ZP_BYTE:34 [ init_mul_tables::dir#2 init_mul_tables::dir#3 ] 8.5: zp ZP_WORD:24 [ init_mul_tables::sqr1_hi#2 init_mul_tables::sqr1_hi#1 ] +Uplift Scope [] 78.34: zp ZP_WORD:12 [ char_cursor#41 char_cursor#64 char_cursor#2 char_cursor#71 char_cursor#27 char_cursor#11 char_cursor#89 char_cursor#20 char_cursor#1 char_cursor#100 ] 74.04: zp ZP_WORD:4 [ line_cursor#11 line_cursor#22 line_cursor#19 line_cursor#17 line_cursor#1 ] +Uplift Scope [mul_tables_compare] 20.39: zp ZP_WORD:17 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::kc_sqr#1 ] 16.08: zp ZP_WORD:19 [ mul_tables_compare::asm_sqr#2 mul_tables_compare::asm_sqr#1 ] +Uplift Scope [print_str] 35.5: zp ZP_WORD:6 [ print_str::str#7 print_str::str#9 print_str::str#0 ] +Uplift Scope [print_cls] 33: zp ZP_WORD:35 [ print_cls::sc#2 print_cls::sc#1 ] +Uplift Scope [print_word] 20: zp ZP_WORD:8 [ print_word::w#4 print_word::w#2 print_word::w#3 print_word::w#0 print_word::w#1 ] +Uplift Scope [print_byte] 10: zp ZP_BYTE:10 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] 4: zp ZP_BYTE:49 [ print_byte::$0 ] 4: zp ZP_BYTE:50 [ print_byte::$2 ] +Uplift Scope [print_char] 14: zp ZP_BYTE:11 [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] +Uplift Scope [print_ln] Uplift Scope [main] Uplift Scope [init_mul_tables_asm] -Uplifting [init_mul_tables] best 5670 combination zp ZP_WORD:22 [ init_mul_tables::sqr#3 init_mul_tables::sqr#4 init_mul_tables::sqr#1 init_mul_tables::sqr#2 ] reg byte x [ init_mul_tables::c#2 init_mul_tables::c#1 ] zp ZP_BYTE:21 [ init_mul_tables::x_2#3 init_mul_tables::x_2#2 init_mul_tables::x_2#1 ] reg byte a [ init_mul_tables::$2 ] reg byte a [ init_mul_tables::$5 ] reg byte a [ init_mul_tables::$6 ] zp ZP_WORD:25 [ init_mul_tables::sqr2_lo#2 init_mul_tables::sqr2_lo#1 ] zp ZP_WORD:17 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_lo#1 ] reg byte x [ init_mul_tables::x_255#2 init_mul_tables::x_255#1 ] zp ZP_WORD:27 [ init_mul_tables::sqr2_hi#2 init_mul_tables::sqr2_hi#1 ] zp ZP_BYTE:29 [ init_mul_tables::dir#2 init_mul_tables::dir#3 ] zp ZP_WORD:19 [ init_mul_tables::sqr1_hi#2 init_mul_tables::sqr1_hi#1 ] -Uplifting [] best 5670 combination zp ZP_WORD:10 [ char_cursor#44 char_cursor#27 char_cursor#39 char_cursor#19 char_cursor#17 char_cursor#10 char_cursor#1 ] -Uplifting [print_str] best 5670 combination zp ZP_WORD:12 [ print_str::str#3 print_str::str#5 print_str::str#0 ] -Uplifting [print_cls] best 5670 combination zp ZP_WORD:14 [ print_cls::sc#2 print_cls::sc#1 ] -Uplifting [mul_tables_compare] best 5670 combination zp ZP_WORD:2 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::kc_sqr#1 ] zp ZP_WORD:4 [ mul_tables_compare::asm_sqr#2 mul_tables_compare::asm_sqr#1 ] -Uplifting [print_byte] best 5658 combination reg byte x [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] reg byte y [ print_byte::$0 ] reg byte a [ print_byte::$2 ] -Uplifting [print_char] best 5649 combination reg byte a [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] -Uplifting [print_word] best 5649 combination zp ZP_WORD:6 [ print_word::w#2 print_word::w#0 print_word::w#1 ] -Uplifting [main] best 5649 combination -Uplifting [init_mul_tables_asm] best 5649 combination -Attempting to uplift remaining variables inzp ZP_BYTE:21 [ init_mul_tables::x_2#3 init_mul_tables::x_2#2 init_mul_tables::x_2#1 ] -Uplifting [init_mul_tables] best 5649 combination zp ZP_BYTE:21 [ init_mul_tables::x_2#3 init_mul_tables::x_2#2 init_mul_tables::x_2#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:29 [ init_mul_tables::dir#2 init_mul_tables::dir#3 ] -Uplifting [init_mul_tables] best 5649 combination zp ZP_BYTE:29 [ init_mul_tables::dir#2 init_mul_tables::dir#3 ] -Coalescing zero page register [ zp ZP_WORD:2 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::kc_sqr#1 ] ] with [ zp ZP_WORD:17 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_lo#1 ] ] -Coalescing zero page register [ zp ZP_WORD:2 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::kc_sqr#1 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_lo#1 ] ] with [ zp ZP_WORD:25 [ init_mul_tables::sqr2_lo#2 init_mul_tables::sqr2_lo#1 ] ] -Coalescing zero page register [ zp ZP_WORD:4 [ mul_tables_compare::asm_sqr#2 mul_tables_compare::asm_sqr#1 ] ] with [ zp ZP_WORD:6 [ print_word::w#2 print_word::w#0 print_word::w#1 ] ] -Coalescing zero page register [ zp ZP_WORD:4 [ mul_tables_compare::asm_sqr#2 mul_tables_compare::asm_sqr#1 print_word::w#2 print_word::w#0 print_word::w#1 ] ] with [ zp ZP_WORD:19 [ init_mul_tables::sqr1_hi#2 init_mul_tables::sqr1_hi#1 ] ] -Coalescing zero page register [ zp ZP_WORD:4 [ mul_tables_compare::asm_sqr#2 mul_tables_compare::asm_sqr#1 print_word::w#2 print_word::w#0 print_word::w#1 init_mul_tables::sqr1_hi#2 init_mul_tables::sqr1_hi#1 ] ] with [ zp ZP_WORD:27 [ init_mul_tables::sqr2_hi#2 init_mul_tables::sqr2_hi#1 ] ] -Coalescing zero page register [ zp ZP_WORD:10 [ char_cursor#44 char_cursor#27 char_cursor#39 char_cursor#19 char_cursor#17 char_cursor#10 char_cursor#1 ] ] with [ zp ZP_WORD:14 [ print_cls::sc#2 print_cls::sc#1 ] ] -Coalescing zero page register [ zp ZP_WORD:10 [ char_cursor#44 char_cursor#27 char_cursor#39 char_cursor#19 char_cursor#17 char_cursor#10 char_cursor#1 print_cls::sc#2 print_cls::sc#1 ] ] with [ zp ZP_WORD:22 [ init_mul_tables::sqr#3 init_mul_tables::sqr#4 init_mul_tables::sqr#1 init_mul_tables::sqr#2 ] ] -Coalescing zero page register [ zp ZP_BYTE:21 [ init_mul_tables::x_2#3 init_mul_tables::x_2#2 init_mul_tables::x_2#1 ] ] with [ zp ZP_BYTE:29 [ init_mul_tables::dir#2 init_mul_tables::dir#3 ] ] -Allocated (was zp ZP_WORD:10) zp ZP_WORD:6 [ char_cursor#44 char_cursor#27 char_cursor#39 char_cursor#19 char_cursor#17 char_cursor#10 char_cursor#1 print_cls::sc#2 print_cls::sc#1 init_mul_tables::sqr#3 init_mul_tables::sqr#4 init_mul_tables::sqr#1 init_mul_tables::sqr#2 ] -Allocated (was zp ZP_WORD:12) zp ZP_WORD:8 [ print_str::str#3 print_str::str#5 print_str::str#0 ] -Allocated (was zp ZP_BYTE:21) zp ZP_BYTE:10 [ init_mul_tables::x_2#3 init_mul_tables::x_2#2 init_mul_tables::x_2#1 init_mul_tables::dir#2 init_mul_tables::dir#3 ] +Uplifting [slow_multiply] best 66221 combination zp ZP_WORD:15 [ slow_multiply::return#0 slow_multiply::m#3 slow_multiply::m#1 ] reg byte y [ slow_multiply::i#2 slow_multiply::i#1 ] zp ZP_WORD:39 [ slow_multiply::return#2 ] reg byte x [ slow_multiply::b#0 ] zp ZP_BYTE:37 [ slow_multiply::a#0 ] +Uplifting [asm_multiply] best 65615 combination zp ZP_WORD:45 [ asm_multiply::return#2 ] reg byte x [ asm_multiply::a#0 ] reg byte a [ asm_multiply::b#0 ] zp ZP_WORD:51 [ asm_multiply::return#0 ] +Uplifting [mul_results_compare] best 65615 combination zp ZP_BYTE:3 [ mul_results_compare::b#2 mul_results_compare::b#1 ] zp ZP_BYTE:2 [ mul_results_compare::a#5 mul_results_compare::a#1 ] zp ZP_WORD:47 [ mul_results_compare::ma#0 ] zp ZP_WORD:41 [ mul_results_compare::ms#0 ] +Uplifting [init_mul_tables] best 65265 combination zp ZP_WORD:27 [ init_mul_tables::sqr#3 init_mul_tables::sqr#4 init_mul_tables::sqr#1 init_mul_tables::sqr#2 ] reg byte x [ init_mul_tables::c#2 init_mul_tables::c#1 ] zp ZP_BYTE:26 [ init_mul_tables::x_2#3 init_mul_tables::x_2#2 init_mul_tables::x_2#1 ] reg byte a [ init_mul_tables::$2 ] reg byte a [ init_mul_tables::$5 ] reg byte a [ init_mul_tables::$6 ] zp ZP_WORD:30 [ init_mul_tables::sqr2_lo#2 init_mul_tables::sqr2_lo#1 ] zp ZP_WORD:22 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_lo#1 ] reg byte x [ init_mul_tables::x_255#2 init_mul_tables::x_255#1 ] zp ZP_WORD:32 [ init_mul_tables::sqr2_hi#2 init_mul_tables::sqr2_hi#1 ] zp ZP_BYTE:34 [ init_mul_tables::dir#2 init_mul_tables::dir#3 ] zp ZP_WORD:24 [ init_mul_tables::sqr1_hi#2 init_mul_tables::sqr1_hi#1 ] +Uplifting [] best 65265 combination zp ZP_WORD:12 [ char_cursor#41 char_cursor#64 char_cursor#2 char_cursor#71 char_cursor#27 char_cursor#11 char_cursor#89 char_cursor#20 char_cursor#1 char_cursor#100 ] zp ZP_WORD:4 [ line_cursor#11 line_cursor#22 line_cursor#19 line_cursor#17 line_cursor#1 ] +Uplifting [mul_tables_compare] best 65265 combination zp ZP_WORD:17 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::kc_sqr#1 ] zp ZP_WORD:19 [ mul_tables_compare::asm_sqr#2 mul_tables_compare::asm_sqr#1 ] +Uplifting [print_str] best 65265 combination zp ZP_WORD:6 [ print_str::str#7 print_str::str#9 print_str::str#0 ] +Uplifting [print_cls] best 65265 combination zp ZP_WORD:35 [ print_cls::sc#2 print_cls::sc#1 ] +Uplifting [print_word] best 65265 combination zp ZP_WORD:8 [ print_word::w#4 print_word::w#2 print_word::w#3 print_word::w#0 print_word::w#1 ] +Uplifting [print_byte] best 65253 combination reg byte x [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] reg byte y [ print_byte::$0 ] reg byte a [ print_byte::$2 ] +Uplifting [print_char] best 65244 combination reg byte a [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] +Uplifting [print_ln] best 65244 combination +Uplifting [main] best 65244 combination +Uplifting [init_mul_tables_asm] best 65244 combination +MISSING FRAGMENTS + vbuxx_le_0_then_la1 + vbuyy_le_0_then_la1 +Attempting to uplift remaining variables inzp ZP_BYTE:3 [ mul_results_compare::b#2 mul_results_compare::b#1 ] +Uplifting [mul_results_compare] best 65244 combination zp ZP_BYTE:3 [ mul_results_compare::b#2 mul_results_compare::b#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:37 [ slow_multiply::a#0 ] +Uplifting [slow_multiply] best 65244 combination zp ZP_BYTE:37 [ slow_multiply::a#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:2 [ mul_results_compare::a#5 mul_results_compare::a#1 ] +Uplifting [mul_results_compare] best 65244 combination zp ZP_BYTE:2 [ mul_results_compare::a#5 mul_results_compare::a#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:26 [ init_mul_tables::x_2#3 init_mul_tables::x_2#2 init_mul_tables::x_2#1 ] +Uplifting [init_mul_tables] best 65244 combination zp ZP_BYTE:26 [ init_mul_tables::x_2#3 init_mul_tables::x_2#2 init_mul_tables::x_2#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:34 [ init_mul_tables::dir#2 init_mul_tables::dir#3 ] +Uplifting [init_mul_tables] best 65244 combination zp ZP_BYTE:34 [ init_mul_tables::dir#2 init_mul_tables::dir#3 ] +Coalescing zero page register [ zp ZP_BYTE:2 [ mul_results_compare::a#5 mul_results_compare::a#1 ] ] with [ zp ZP_BYTE:26 [ init_mul_tables::x_2#3 init_mul_tables::x_2#2 init_mul_tables::x_2#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:2 [ mul_results_compare::a#5 mul_results_compare::a#1 init_mul_tables::x_2#3 init_mul_tables::x_2#2 init_mul_tables::x_2#1 ] ] with [ zp ZP_BYTE:34 [ init_mul_tables::dir#2 init_mul_tables::dir#3 ] ] +Coalescing zero page register [ zp ZP_BYTE:2 [ mul_results_compare::a#5 mul_results_compare::a#1 init_mul_tables::x_2#3 init_mul_tables::x_2#2 init_mul_tables::x_2#1 init_mul_tables::dir#2 init_mul_tables::dir#3 ] ] with [ zp ZP_BYTE:37 [ slow_multiply::a#0 ] ] +Coalescing zero page register [ zp ZP_WORD:4 [ line_cursor#11 line_cursor#22 line_cursor#19 line_cursor#17 line_cursor#1 ] ] with [ zp ZP_WORD:17 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::kc_sqr#1 ] ] +Coalescing zero page register [ zp ZP_WORD:4 [ line_cursor#11 line_cursor#22 line_cursor#19 line_cursor#17 line_cursor#1 mul_tables_compare::kc_sqr#2 mul_tables_compare::kc_sqr#1 ] ] with [ zp ZP_WORD:22 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_lo#1 ] ] +Coalescing zero page register [ zp ZP_WORD:4 [ line_cursor#11 line_cursor#22 line_cursor#19 line_cursor#17 line_cursor#1 mul_tables_compare::kc_sqr#2 mul_tables_compare::kc_sqr#1 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_lo#1 ] ] with [ zp ZP_WORD:30 [ init_mul_tables::sqr2_lo#2 init_mul_tables::sqr2_lo#1 ] ] +Coalescing zero page register [ zp ZP_WORD:4 [ line_cursor#11 line_cursor#22 line_cursor#19 line_cursor#17 line_cursor#1 mul_tables_compare::kc_sqr#2 mul_tables_compare::kc_sqr#1 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_lo#1 init_mul_tables::sqr2_lo#2 init_mul_tables::sqr2_lo#1 ] ] with [ zp ZP_WORD:35 [ print_cls::sc#2 print_cls::sc#1 ] ] +Coalescing zero page register [ zp ZP_WORD:6 [ print_str::str#7 print_str::str#9 print_str::str#0 ] ] with [ zp ZP_WORD:8 [ print_word::w#4 print_word::w#2 print_word::w#3 print_word::w#0 print_word::w#1 ] ] +Coalescing zero page register [ zp ZP_WORD:6 [ print_str::str#7 print_str::str#9 print_str::str#0 print_word::w#4 print_word::w#2 print_word::w#3 print_word::w#0 print_word::w#1 ] ] with [ zp ZP_WORD:15 [ slow_multiply::return#0 slow_multiply::m#3 slow_multiply::m#1 ] ] +Coalescing zero page register [ zp ZP_WORD:6 [ print_str::str#7 print_str::str#9 print_str::str#0 print_word::w#4 print_word::w#2 print_word::w#3 print_word::w#0 print_word::w#1 slow_multiply::return#0 slow_multiply::m#3 slow_multiply::m#1 ] ] with [ zp ZP_WORD:24 [ init_mul_tables::sqr1_hi#2 init_mul_tables::sqr1_hi#1 ] ] +Coalescing zero page register [ zp ZP_WORD:6 [ print_str::str#7 print_str::str#9 print_str::str#0 print_word::w#4 print_word::w#2 print_word::w#3 print_word::w#0 print_word::w#1 slow_multiply::return#0 slow_multiply::m#3 slow_multiply::m#1 init_mul_tables::sqr1_hi#2 init_mul_tables::sqr1_hi#1 ] ] with [ zp ZP_WORD:32 [ init_mul_tables::sqr2_hi#2 init_mul_tables::sqr2_hi#1 ] ] +Coalescing zero page register [ zp ZP_WORD:6 [ print_str::str#7 print_str::str#9 print_str::str#0 print_word::w#4 print_word::w#2 print_word::w#3 print_word::w#0 print_word::w#1 slow_multiply::return#0 slow_multiply::m#3 slow_multiply::m#1 init_mul_tables::sqr1_hi#2 init_mul_tables::sqr1_hi#1 init_mul_tables::sqr2_hi#2 init_mul_tables::sqr2_hi#1 ] ] with [ zp ZP_WORD:39 [ slow_multiply::return#2 ] ] +Coalescing zero page register [ zp ZP_WORD:6 [ print_str::str#7 print_str::str#9 print_str::str#0 print_word::w#4 print_word::w#2 print_word::w#3 print_word::w#0 print_word::w#1 slow_multiply::return#0 slow_multiply::m#3 slow_multiply::m#1 init_mul_tables::sqr1_hi#2 init_mul_tables::sqr1_hi#1 init_mul_tables::sqr2_hi#2 init_mul_tables::sqr2_hi#1 slow_multiply::return#2 ] ] with [ zp ZP_WORD:45 [ asm_multiply::return#2 ] ] +Coalescing zero page register [ zp ZP_WORD:6 [ print_str::str#7 print_str::str#9 print_str::str#0 print_word::w#4 print_word::w#2 print_word::w#3 print_word::w#0 print_word::w#1 slow_multiply::return#0 slow_multiply::m#3 slow_multiply::m#1 init_mul_tables::sqr1_hi#2 init_mul_tables::sqr1_hi#1 init_mul_tables::sqr2_hi#2 init_mul_tables::sqr2_hi#1 slow_multiply::return#2 asm_multiply::return#2 ] ] with [ zp ZP_WORD:51 [ asm_multiply::return#0 ] ] +Coalescing zero page register [ zp ZP_WORD:12 [ char_cursor#41 char_cursor#64 char_cursor#2 char_cursor#71 char_cursor#27 char_cursor#11 char_cursor#89 char_cursor#20 char_cursor#1 char_cursor#100 ] ] with [ zp ZP_WORD:27 [ init_mul_tables::sqr#3 init_mul_tables::sqr#4 init_mul_tables::sqr#1 init_mul_tables::sqr#2 ] ] +Coalescing zero page register [ zp ZP_WORD:19 [ mul_tables_compare::asm_sqr#2 mul_tables_compare::asm_sqr#1 ] ] with [ zp ZP_WORD:41 [ mul_results_compare::ms#0 ] ] +Allocated (was zp ZP_WORD:12) zp ZP_WORD:8 [ char_cursor#41 char_cursor#64 char_cursor#2 char_cursor#71 char_cursor#27 char_cursor#11 char_cursor#89 char_cursor#20 char_cursor#1 char_cursor#100 init_mul_tables::sqr#3 init_mul_tables::sqr#4 init_mul_tables::sqr#1 init_mul_tables::sqr#2 ] +Allocated (was zp ZP_WORD:19) zp ZP_WORD:10 [ mul_tables_compare::asm_sqr#2 mul_tables_compare::asm_sqr#1 mul_results_compare::ms#0 ] +Allocated (was zp ZP_WORD:47) zp ZP_WORD:12 [ mul_results_compare::ma#0 ] ASSEMBLER BEFORE OPTIMIZATION //SEG0 Basic Upstart @@ -3020,169 +4875,630 @@ ASSEMBLER BEFORE OPTIMIZATION .pc = $80d "Program" //SEG1 Global Constants & labels .const BGCOL = $d021 - .label char_cursor = 6 + .label char_cursor = 8 + .label line_cursor = 4 //SEG2 @begin bbegin: -//SEG3 [1] phi from @begin to @10 [phi:@begin->@10] -b10_from_bbegin: - jmp b10 -//SEG4 @10 -b10: +//SEG3 [1] phi from @begin to @13 [phi:@begin->@13] +b13_from_bbegin: + jmp b13 +//SEG4 @13 +b13: //SEG5 [2] call main param-assignment [ ] ( ) -//SEG6 [4] phi from @10 to main [phi:@10->main] -main_from_b10: jsr main -//SEG7 [3] phi from @10 to @end [phi:@10->@end] -bend_from_b10: +//SEG6 [3] phi from @13 to @end [phi:@13->@end] +bend_from_b13: jmp bend -//SEG8 @end +//SEG7 @end bend: -//SEG9 main +//SEG8 main main: { - //SEG10 [5] call init_mul_tables param-assignment [ ] ( main:2 [ ] ) - //SEG11 [66] phi from main to init_mul_tables [phi:main->init_mul_tables] - init_mul_tables_from_main: - jsr init_mul_tables + //SEG9 [4] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 5 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2 + lda #5 + sta BGCOL + //SEG10 [5] call print_cls param-assignment [ ] ( main:2 [ ] ) + //SEG11 [146] phi from main to print_cls [phi:main->print_cls] + print_cls_from_main: + jsr print_cls //SEG12 [6] phi from main to main::@1 [phi:main->main::@1] b1_from_main: jmp b1 //SEG13 main::@1 b1: - //SEG14 [7] call init_mul_tables_asm param-assignment [ ] ( main:2 [ ] ) - jsr init_mul_tables_asm - //SEG15 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG14 [7] call init_mul_tables param-assignment [ ] ( main:2 [ ] ) + //SEG15 [117] phi from main::@1 to init_mul_tables [phi:main::@1->init_mul_tables] + init_mul_tables_from_b1: + jsr init_mul_tables + //SEG16 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: jmp b2 - //SEG16 main::@2 + //SEG17 main::@2 b2: - //SEG17 [9] call mul_tables_compare param-assignment [ ] ( main:2 [ ] ) + //SEG18 [9] call init_mul_tables_asm param-assignment [ ] ( main:2 [ ] ) + jsr init_mul_tables_asm + //SEG19 [10] phi from main::@2 to main::@3 [phi:main::@2->main::@3] + b3_from_b2: + jmp b3 + //SEG20 main::@3 + b3: + //SEG21 [11] call mul_tables_compare param-assignment [ line_cursor#17 char_cursor#20 ] ( main:2 [ line_cursor#17 char_cursor#20 ] ) + //SEG22 [90] phi from main::@3 to mul_tables_compare [phi:main::@3->mul_tables_compare] + mul_tables_compare_from_b3: jsr mul_tables_compare + //SEG23 [12] phi from main::@3 to main::@4 [phi:main::@3->main::@4] + b4_from_b3: + jmp b4 + //SEG24 main::@4 + b4: + //SEG25 [13] call mul_results_compare param-assignment [ ] ( main:2 [ ] ) + //SEG26 [15] phi from main::@4 to mul_results_compare [phi:main::@4->mul_results_compare] + mul_results_compare_from_b4: + jsr mul_results_compare jmp breturn - //SEG18 main::@return + //SEG27 main::@return breturn: - //SEG19 [10] return [ ] ( main:2 [ ] ) + //SEG28 [14] return [ ] ( main:2 [ ] ) rts } -//SEG20 mul_tables_compare -mul_tables_compare: { - .label asm_sqr = 4 - .label kc_sqr = 2 - //SEG21 [11] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 5 [ ] ( main:2::mul_tables_compare:9 [ ] ) -- _deref_pbuc1=vbuc2 - lda #5 +//SEG29 mul_results_compare +mul_results_compare: { + .label ms = $a + .label ma = $c + .label b = 3 + .label a = 2 + //SEG30 [16] phi from mul_results_compare to mul_results_compare::@1 [phi:mul_results_compare->mul_results_compare::@1] + b1_from_mul_results_compare: + //SEG31 [16] phi (byte) mul_results_compare::a#5 = (byte/signed byte/word/signed word) 0 [phi:mul_results_compare->mul_results_compare::@1#0] -- vbuz1=vbuc1 + lda #0 + sta a + jmp b1 + //SEG32 [16] phi from mul_results_compare::@6 to mul_results_compare::@1 [phi:mul_results_compare::@6->mul_results_compare::@1] + b1_from_b6: + //SEG33 [16] phi (byte) mul_results_compare::a#5 = (byte) mul_results_compare::a#1 [phi:mul_results_compare::@6->mul_results_compare::@1#0] -- register_copy + jmp b1 + //SEG34 mul_results_compare::@1 + b1: + //SEG35 [17] phi from mul_results_compare::@1 to mul_results_compare::@2 [phi:mul_results_compare::@1->mul_results_compare::@2] + b2_from_b1: + //SEG36 [17] phi (byte) mul_results_compare::b#2 = (byte/signed byte/word/signed word) 0 [phi:mul_results_compare::@1->mul_results_compare::@2#0] -- vbuz1=vbuc1 + lda #0 + sta b + jmp b2 + //SEG37 [17] phi from mul_results_compare::@3 to mul_results_compare::@2 [phi:mul_results_compare::@3->mul_results_compare::@2] + b2_from_b3: + //SEG38 [17] phi (byte) mul_results_compare::b#2 = (byte) mul_results_compare::b#1 [phi:mul_results_compare::@3->mul_results_compare::@2#0] -- register_copy + jmp b2 + //SEG39 mul_results_compare::@2 + b2: + //SEG40 [18] (byte) slow_multiply::a#0 ← (byte) mul_results_compare::a#5 [ mul_results_compare::a#5 mul_results_compare::b#2 slow_multiply::a#0 line_cursor#17 char_cursor#20 ] ( main:2::mul_results_compare:13 [ mul_results_compare::a#5 mul_results_compare::b#2 slow_multiply::a#0 line_cursor#17 char_cursor#20 ] ) + // (byte) slow_multiply::a#0 = (byte) mul_results_compare::a#5 // register copy zp ZP_BYTE:2 + //SEG41 [19] (byte) slow_multiply::b#0 ← (byte) mul_results_compare::b#2 [ mul_results_compare::a#5 mul_results_compare::b#2 slow_multiply::a#0 slow_multiply::b#0 line_cursor#17 char_cursor#20 ] ( main:2::mul_results_compare:13 [ mul_results_compare::a#5 mul_results_compare::b#2 slow_multiply::a#0 slow_multiply::b#0 line_cursor#17 char_cursor#20 ] ) -- vbuxx=vbuz1 + ldx b + //SEG42 [20] call slow_multiply param-assignment [ mul_results_compare::a#5 mul_results_compare::b#2 slow_multiply::return#0 line_cursor#17 char_cursor#20 ] ( main:2::mul_results_compare:13 [ mul_results_compare::a#5 mul_results_compare::b#2 slow_multiply::return#0 line_cursor#17 char_cursor#20 ] ) + jsr slow_multiply + //SEG43 [21] (word) slow_multiply::return#2 ← (word) slow_multiply::return#0 [ mul_results_compare::a#5 mul_results_compare::b#2 slow_multiply::return#2 line_cursor#17 char_cursor#20 ] ( main:2::mul_results_compare:13 [ mul_results_compare::a#5 mul_results_compare::b#2 slow_multiply::return#2 line_cursor#17 char_cursor#20 ] ) + // (word) slow_multiply::return#2 = (word) slow_multiply::return#0 // register copy zp ZP_WORD:6 + jmp b8 + //SEG44 mul_results_compare::@8 + b8: + //SEG45 [22] (word) mul_results_compare::ms#0 ← (word) slow_multiply::return#2 [ mul_results_compare::a#5 mul_results_compare::b#2 mul_results_compare::ms#0 line_cursor#17 char_cursor#20 ] ( main:2::mul_results_compare:13 [ mul_results_compare::a#5 mul_results_compare::b#2 mul_results_compare::ms#0 line_cursor#17 char_cursor#20 ] ) -- vwuz1=vwuz2 + lda slow_multiply.return + sta ms + lda slow_multiply.return+1 + sta ms+1 + //SEG46 [23] (byte) asm_multiply::a#0 ← (byte) mul_results_compare::a#5 [ mul_results_compare::a#5 mul_results_compare::b#2 mul_results_compare::ms#0 asm_multiply::a#0 line_cursor#17 char_cursor#20 ] ( main:2::mul_results_compare:13 [ mul_results_compare::a#5 mul_results_compare::b#2 mul_results_compare::ms#0 asm_multiply::a#0 line_cursor#17 char_cursor#20 ] ) -- vbuxx=vbuz1 + ldx a + //SEG47 [24] (byte) asm_multiply::b#0 ← (byte) mul_results_compare::b#2 [ mul_results_compare::a#5 mul_results_compare::b#2 mul_results_compare::ms#0 asm_multiply::a#0 asm_multiply::b#0 line_cursor#17 char_cursor#20 ] ( main:2::mul_results_compare:13 [ mul_results_compare::a#5 mul_results_compare::b#2 mul_results_compare::ms#0 asm_multiply::a#0 asm_multiply::b#0 line_cursor#17 char_cursor#20 ] ) -- vbuaa=vbuz1 + lda b + //SEG48 [25] call asm_multiply param-assignment [ mul_results_compare::a#5 mul_results_compare::b#2 mul_results_compare::ms#0 asm_multiply::return#0 line_cursor#17 char_cursor#20 ] ( main:2::mul_results_compare:13 [ mul_results_compare::a#5 mul_results_compare::b#2 mul_results_compare::ms#0 asm_multiply::return#0 line_cursor#17 char_cursor#20 ] ) + jsr asm_multiply + //SEG49 [26] (word) asm_multiply::return#2 ← (word) asm_multiply::return#0 [ mul_results_compare::a#5 mul_results_compare::b#2 mul_results_compare::ms#0 asm_multiply::return#2 line_cursor#17 char_cursor#20 ] ( main:2::mul_results_compare:13 [ mul_results_compare::a#5 mul_results_compare::b#2 mul_results_compare::ms#0 asm_multiply::return#2 line_cursor#17 char_cursor#20 ] ) + // (word) asm_multiply::return#2 = (word) asm_multiply::return#0 // register copy zp ZP_WORD:6 + jmp b9 + //SEG50 mul_results_compare::@9 + b9: + //SEG51 [27] (word) mul_results_compare::ma#0 ← (word) asm_multiply::return#2 [ mul_results_compare::a#5 mul_results_compare::b#2 mul_results_compare::ms#0 mul_results_compare::ma#0 line_cursor#17 char_cursor#20 ] ( main:2::mul_results_compare:13 [ mul_results_compare::a#5 mul_results_compare::b#2 mul_results_compare::ms#0 mul_results_compare::ma#0 line_cursor#17 char_cursor#20 ] ) -- vwuz1=vwuz2 + lda asm_multiply.return + sta ma + lda asm_multiply.return+1 + sta ma+1 + //SEG52 [28] if((word) mul_results_compare::ms#0==(word) mul_results_compare::ma#0) goto mul_results_compare::@3 [ mul_results_compare::a#5 mul_results_compare::b#2 mul_results_compare::ms#0 mul_results_compare::ma#0 line_cursor#17 char_cursor#20 ] ( main:2::mul_results_compare:13 [ mul_results_compare::a#5 mul_results_compare::b#2 mul_results_compare::ms#0 mul_results_compare::ma#0 line_cursor#17 char_cursor#20 ] ) -- vwuz1_eq_vwuz2_then_la1 + lda ms + cmp ma + bne !+ + lda ms+1 + cmp ma+1 + beq b3 + !: + jmp b4 + //SEG53 mul_results_compare::@4 + b4: + //SEG54 [29] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 2 [ mul_results_compare::ms#0 mul_results_compare::ma#0 line_cursor#17 char_cursor#20 ] ( main:2::mul_results_compare:13 [ mul_results_compare::ms#0 mul_results_compare::ma#0 line_cursor#17 char_cursor#20 ] ) -- _deref_pbuc1=vbuc2 + lda #2 sta BGCOL - //SEG22 [12] phi from mul_tables_compare to mul_tables_compare::@1 [phi:mul_tables_compare->mul_tables_compare::@1] + //SEG55 [30] call print_str param-assignment [ mul_results_compare::ms#0 mul_results_compare::ma#0 line_cursor#17 char_cursor#2 ] ( main:2::mul_results_compare:13 [ mul_results_compare::ms#0 mul_results_compare::ma#0 line_cursor#17 char_cursor#2 ] ) + //SEG56 [53] phi from mul_results_compare::@4 to print_str [phi:mul_results_compare::@4->print_str] + print_str_from_b4: + //SEG57 [53] phi (byte*) char_cursor#71 = (byte*) char_cursor#20 [phi:mul_results_compare::@4->print_str#0] -- register_copy + //SEG58 [53] phi (byte*) print_str::str#9 = (const string) mul_results_compare::str [phi:mul_results_compare::@4->print_str#1] -- pbuz1=pbuc1 + lda #str + sta print_str.str+1 + jsr print_str + jmp b10 + //SEG59 mul_results_compare::@10 + b10: + //SEG60 [31] (word) print_word::w#2 ← (word) mul_results_compare::ms#0 [ mul_results_compare::ma#0 print_word::w#2 line_cursor#17 char_cursor#2 ] ( main:2::mul_results_compare:13 [ mul_results_compare::ma#0 print_word::w#2 line_cursor#17 char_cursor#2 ] ) -- vwuz1=vwuz2 + lda ms + sta print_word.w + lda ms+1 + sta print_word.w+1 + //SEG61 [32] call print_word param-assignment [ mul_results_compare::ma#0 char_cursor#11 line_cursor#17 ] ( main:2::mul_results_compare:13 [ mul_results_compare::ma#0 char_cursor#11 line_cursor#17 ] ) + //SEG62 [60] phi from mul_results_compare::@10 to print_word [phi:mul_results_compare::@10->print_word] + print_word_from_b10: + //SEG63 [60] phi (word) print_word::w#4 = (word) print_word::w#2 [phi:mul_results_compare::@10->print_word#0] -- register_copy + jsr print_word + //SEG64 [33] phi from mul_results_compare::@10 to mul_results_compare::@11 [phi:mul_results_compare::@10->mul_results_compare::@11] + b11_from_b10: + jmp b11 + //SEG65 mul_results_compare::@11 + b11: + //SEG66 [34] call print_str param-assignment [ mul_results_compare::ma#0 line_cursor#17 char_cursor#2 ] ( main:2::mul_results_compare:13 [ mul_results_compare::ma#0 line_cursor#17 char_cursor#2 ] ) + //SEG67 [53] phi from mul_results_compare::@11 to print_str [phi:mul_results_compare::@11->print_str] + print_str_from_b11: + //SEG68 [53] phi (byte*) char_cursor#71 = (byte*) char_cursor#11 [phi:mul_results_compare::@11->print_str#0] -- register_copy + //SEG69 [53] phi (byte*) print_str::str#9 = (const string) mul_results_compare::str1 [phi:mul_results_compare::@11->print_str#1] -- pbuz1=pbuc1 + lda #str1 + sta print_str.str+1 + jsr print_str + jmp b12 + //SEG70 mul_results_compare::@12 + b12: + //SEG71 [35] (word) print_word::w#3 ← (word) mul_results_compare::ma#0 [ print_word::w#3 line_cursor#17 char_cursor#2 ] ( main:2::mul_results_compare:13 [ print_word::w#3 line_cursor#17 char_cursor#2 ] ) -- vwuz1=vwuz2 + lda ma + sta print_word.w + lda ma+1 + sta print_word.w+1 + //SEG72 [36] call print_word param-assignment [ char_cursor#11 line_cursor#17 ] ( main:2::mul_results_compare:13 [ char_cursor#11 line_cursor#17 ] ) + //SEG73 [60] phi from mul_results_compare::@12 to print_word [phi:mul_results_compare::@12->print_word] + print_word_from_b12: + //SEG74 [60] phi (word) print_word::w#4 = (word) print_word::w#3 [phi:mul_results_compare::@12->print_word#0] -- register_copy + jsr print_word + //SEG75 [37] phi from mul_results_compare::@12 mul_results_compare::@14 to mul_results_compare::@return [phi:mul_results_compare::@12/mul_results_compare::@14->mul_results_compare::@return] + breturn_from_b12: + breturn_from_b14: + //SEG76 [37] phi (byte*) line_cursor#19 = (byte*) line_cursor#17 [phi:mul_results_compare::@12/mul_results_compare::@14->mul_results_compare::@return#0] -- register_copy + //SEG77 [37] phi (byte*) char_cursor#27 = (byte*) char_cursor#11 [phi:mul_results_compare::@12/mul_results_compare::@14->mul_results_compare::@return#1] -- register_copy + jmp breturn + //SEG78 mul_results_compare::@return + breturn: + //SEG79 [38] return [ ] ( main:2::mul_results_compare:13 [ ] ) + rts + //SEG80 mul_results_compare::@3 + b3: + //SEG81 [39] (byte) mul_results_compare::b#1 ← ++ (byte) mul_results_compare::b#2 [ mul_results_compare::a#5 mul_results_compare::b#1 line_cursor#17 char_cursor#20 ] ( main:2::mul_results_compare:13 [ mul_results_compare::a#5 mul_results_compare::b#1 line_cursor#17 char_cursor#20 ] ) -- vbuz1=_inc_vbuz1 + inc b + //SEG82 [40] if((byte) mul_results_compare::b#1!=(byte/signed byte/word/signed word) 0) goto mul_results_compare::@2 [ mul_results_compare::a#5 mul_results_compare::b#1 line_cursor#17 char_cursor#20 ] ( main:2::mul_results_compare:13 [ mul_results_compare::a#5 mul_results_compare::b#1 line_cursor#17 char_cursor#20 ] ) -- vbuz1_neq_0_then_la1 + lda b + bne b2_from_b3 + jmp b6 + //SEG83 mul_results_compare::@6 + b6: + //SEG84 [41] (byte) mul_results_compare::a#1 ← ++ (byte) mul_results_compare::a#5 [ mul_results_compare::a#1 line_cursor#17 char_cursor#20 ] ( main:2::mul_results_compare:13 [ mul_results_compare::a#1 line_cursor#17 char_cursor#20 ] ) -- vbuz1=_inc_vbuz1 + inc a + //SEG85 [42] if((byte) mul_results_compare::a#1!=(byte/signed byte/word/signed word) 0) goto mul_results_compare::@1 [ mul_results_compare::a#1 line_cursor#17 char_cursor#20 ] ( main:2::mul_results_compare:13 [ mul_results_compare::a#1 line_cursor#17 char_cursor#20 ] ) -- vbuz1_neq_0_then_la1 + lda a + bne b1_from_b6 + //SEG86 [43] phi from mul_results_compare::@6 to mul_results_compare::@7 [phi:mul_results_compare::@6->mul_results_compare::@7] + b7_from_b6: + jmp b7 + //SEG87 mul_results_compare::@7 + b7: + //SEG88 [44] call print_str param-assignment [ line_cursor#17 char_cursor#2 ] ( main:2::mul_results_compare:13 [ line_cursor#17 char_cursor#2 ] ) + //SEG89 [53] phi from mul_results_compare::@7 to print_str [phi:mul_results_compare::@7->print_str] + print_str_from_b7: + //SEG90 [53] phi (byte*) char_cursor#71 = (byte*) char_cursor#20 [phi:mul_results_compare::@7->print_str#0] -- register_copy + //SEG91 [53] phi (byte*) print_str::str#9 = (const string) mul_results_compare::str2 [phi:mul_results_compare::@7->print_str#1] -- pbuz1=pbuc1 + lda #str2 + sta print_str.str+1 + jsr print_str + //SEG92 [45] phi from mul_results_compare::@7 to mul_results_compare::@14 [phi:mul_results_compare::@7->mul_results_compare::@14] + b14_from_b7: + jmp b14 + //SEG93 mul_results_compare::@14 + b14: + //SEG94 [46] call print_ln param-assignment [ line_cursor#1 ] ( main:2::mul_results_compare:13 [ line_cursor#1 ] ) + //SEG95 [48] phi from mul_results_compare::@14 to print_ln [phi:mul_results_compare::@14->print_ln] + print_ln_from_b14: + //SEG96 [48] phi (byte*) line_cursor#22 = (byte*) line_cursor#17 [phi:mul_results_compare::@14->print_ln#0] -- register_copy + jsr print_ln + //SEG97 [47] (byte*~) char_cursor#89 ← (byte*) line_cursor#1 [ char_cursor#89 line_cursor#1 ] ( main:2::mul_results_compare:13 [ char_cursor#89 line_cursor#1 ] ) -- pbuz1=pbuz2 + lda line_cursor + sta char_cursor + lda line_cursor+1 + sta char_cursor+1 + jmp breturn_from_b14 + str: .text "multiply mismatch slow:@" + str1: .text " / fast asm:" + str2: .text "multiply results match!@" +} +//SEG98 print_ln +print_ln: { + //SEG99 [49] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1] + b1_from_print_ln: + b1_from_b1: + //SEG100 [49] phi (byte*) line_cursor#11 = (byte*) line_cursor#22 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy + jmp b1 + //SEG101 print_ln::@1 + b1: + //SEG102 [50] (byte*) line_cursor#1 ← (byte*) line_cursor#11 + (byte/signed byte/word/signed word) 40 [ line_cursor#1 char_cursor#2 ] ( main:2::mul_results_compare:13::print_ln:46 [ line_cursor#1 char_cursor#2 ] main:2::mul_tables_compare:11::print_ln:109 [ line_cursor#1 char_cursor#2 ] ) -- pbuz1=pbuz1_plus_vbuc1 + lda line_cursor + clc + adc #$28 + sta line_cursor + bcc !+ + inc line_cursor+1 + !: + //SEG103 [51] if((byte*) line_cursor#1<(byte*) char_cursor#2) goto print_ln::@1 [ line_cursor#1 char_cursor#2 ] ( main:2::mul_results_compare:13::print_ln:46 [ line_cursor#1 char_cursor#2 ] main:2::mul_tables_compare:11::print_ln:109 [ line_cursor#1 char_cursor#2 ] ) -- pbuz1_lt_pbuz2_then_la1 + lda line_cursor+1 + cmp char_cursor+1 + bcc b1_from_b1 + bne !+ + lda line_cursor + cmp char_cursor + bcc b1_from_b1 + !: + jmp breturn + //SEG104 print_ln::@return + breturn: + //SEG105 [52] return [ line_cursor#1 ] ( main:2::mul_results_compare:13::print_ln:46 [ line_cursor#1 ] main:2::mul_tables_compare:11::print_ln:109 [ line_cursor#1 ] ) + rts +} +//SEG106 print_str +print_str: { + .label str = 6 + //SEG107 [54] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] + b1_from_print_str: + b1_from_b2: + //SEG108 [54] phi (byte*) char_cursor#2 = (byte*) char_cursor#71 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy + //SEG109 [54] phi (byte*) print_str::str#7 = (byte*) print_str::str#9 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy + jmp b1 + //SEG110 print_str::@1 + b1: + //SEG111 [55] if(*((byte*) print_str::str#7)!=(byte) '@') goto print_str::@2 [ char_cursor#2 print_str::str#7 ] ( main:2::mul_results_compare:13::print_str:30 [ mul_results_compare::ms#0 mul_results_compare::ma#0 line_cursor#17 char_cursor#2 print_str::str#7 ] main:2::mul_results_compare:13::print_str:34 [ mul_results_compare::ma#0 line_cursor#17 char_cursor#2 print_str::str#7 ] main:2::mul_results_compare:13::print_str:44 [ line_cursor#17 char_cursor#2 print_str::str#7 ] main:2::mul_tables_compare:11::print_str:94 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 char_cursor#2 print_str::str#7 ] main:2::mul_tables_compare:11::print_str:98 [ mul_tables_compare::kc_sqr#2 char_cursor#2 print_str::str#7 ] main:2::mul_tables_compare:11::print_str:107 [ char_cursor#2 print_str::str#7 ] ) -- _deref_pbuz1_neq_vbuc1_then_la1 + ldy #0 + lda (str),y + cmp #'@' + bne b2 + jmp breturn + //SEG112 print_str::@return + breturn: + //SEG113 [56] return [ char_cursor#2 ] ( main:2::mul_results_compare:13::print_str:30 [ mul_results_compare::ms#0 mul_results_compare::ma#0 line_cursor#17 char_cursor#2 ] main:2::mul_results_compare:13::print_str:34 [ mul_results_compare::ma#0 line_cursor#17 char_cursor#2 ] main:2::mul_results_compare:13::print_str:44 [ line_cursor#17 char_cursor#2 ] main:2::mul_tables_compare:11::print_str:94 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 char_cursor#2 ] main:2::mul_tables_compare:11::print_str:98 [ mul_tables_compare::kc_sqr#2 char_cursor#2 ] main:2::mul_tables_compare:11::print_str:107 [ char_cursor#2 ] ) + rts + //SEG114 print_str::@2 + b2: + //SEG115 [57] *((byte*) char_cursor#2) ← *((byte*) print_str::str#7) [ char_cursor#2 print_str::str#7 ] ( main:2::mul_results_compare:13::print_str:30 [ mul_results_compare::ms#0 mul_results_compare::ma#0 line_cursor#17 char_cursor#2 print_str::str#7 ] main:2::mul_results_compare:13::print_str:34 [ mul_results_compare::ma#0 line_cursor#17 char_cursor#2 print_str::str#7 ] main:2::mul_results_compare:13::print_str:44 [ line_cursor#17 char_cursor#2 print_str::str#7 ] main:2::mul_tables_compare:11::print_str:94 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 char_cursor#2 print_str::str#7 ] main:2::mul_tables_compare:11::print_str:98 [ mul_tables_compare::kc_sqr#2 char_cursor#2 print_str::str#7 ] main:2::mul_tables_compare:11::print_str:107 [ char_cursor#2 print_str::str#7 ] ) -- _deref_pbuz1=_deref_pbuz2 + ldy #0 + lda (str),y + ldy #0 + sta (char_cursor),y + //SEG116 [58] (byte*) char_cursor#1 ← ++ (byte*) char_cursor#2 [ print_str::str#7 char_cursor#1 ] ( main:2::mul_results_compare:13::print_str:30 [ mul_results_compare::ms#0 mul_results_compare::ma#0 line_cursor#17 print_str::str#7 char_cursor#1 ] main:2::mul_results_compare:13::print_str:34 [ mul_results_compare::ma#0 line_cursor#17 print_str::str#7 char_cursor#1 ] main:2::mul_results_compare:13::print_str:44 [ line_cursor#17 print_str::str#7 char_cursor#1 ] main:2::mul_tables_compare:11::print_str:94 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 print_str::str#7 char_cursor#1 ] main:2::mul_tables_compare:11::print_str:98 [ mul_tables_compare::kc_sqr#2 print_str::str#7 char_cursor#1 ] main:2::mul_tables_compare:11::print_str:107 [ print_str::str#7 char_cursor#1 ] ) -- pbuz1=_inc_pbuz1 + inc char_cursor + bne !+ + inc char_cursor+1 + !: + //SEG117 [59] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#7 [ print_str::str#0 char_cursor#1 ] ( main:2::mul_results_compare:13::print_str:30 [ mul_results_compare::ms#0 mul_results_compare::ma#0 line_cursor#17 print_str::str#0 char_cursor#1 ] main:2::mul_results_compare:13::print_str:34 [ mul_results_compare::ma#0 line_cursor#17 print_str::str#0 char_cursor#1 ] main:2::mul_results_compare:13::print_str:44 [ line_cursor#17 print_str::str#0 char_cursor#1 ] main:2::mul_tables_compare:11::print_str:94 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 print_str::str#0 char_cursor#1 ] main:2::mul_tables_compare:11::print_str:98 [ mul_tables_compare::kc_sqr#2 print_str::str#0 char_cursor#1 ] main:2::mul_tables_compare:11::print_str:107 [ print_str::str#0 char_cursor#1 ] ) -- pbuz1=_inc_pbuz1 + inc str + bne !+ + inc str+1 + !: + jmp b1_from_b2 +} +//SEG118 print_word +print_word: { + .label w = 6 + //SEG119 [61] (byte) print_byte::b#0 ← > (word) print_word::w#4 [ char_cursor#2 print_word::w#4 print_byte::b#0 ] ( main:2::mul_results_compare:13::print_word:32 [ mul_results_compare::ma#0 line_cursor#17 char_cursor#2 print_word::w#4 print_byte::b#0 ] main:2::mul_results_compare:13::print_word:36 [ line_cursor#17 char_cursor#2 print_word::w#4 print_byte::b#0 ] main:2::mul_tables_compare:11::print_word:96 [ mul_tables_compare::kc_sqr#2 char_cursor#2 print_word::w#4 print_byte::b#0 ] main:2::mul_tables_compare:11::print_word:100 [ char_cursor#2 print_word::w#4 print_byte::b#0 ] ) -- vbuxx=_hi_vwuz1 + lda w+1 + tax + //SEG120 [62] call print_byte param-assignment [ char_cursor#11 print_word::w#4 ] ( main:2::mul_results_compare:13::print_word:32 [ mul_results_compare::ma#0 line_cursor#17 char_cursor#11 print_word::w#4 ] main:2::mul_results_compare:13::print_word:36 [ line_cursor#17 char_cursor#11 print_word::w#4 ] main:2::mul_tables_compare:11::print_word:96 [ mul_tables_compare::kc_sqr#2 char_cursor#11 print_word::w#4 ] main:2::mul_tables_compare:11::print_word:100 [ char_cursor#11 print_word::w#4 ] ) + //SEG121 [66] phi from print_word to print_byte [phi:print_word->print_byte] + print_byte_from_print_word: + //SEG122 [66] phi (byte*) char_cursor#64 = (byte*) char_cursor#2 [phi:print_word->print_byte#0] -- register_copy + //SEG123 [66] phi (byte) print_byte::b#2 = (byte) print_byte::b#0 [phi:print_word->print_byte#1] -- register_copy + jsr print_byte + jmp b1 + //SEG124 print_word::@1 + b1: + //SEG125 [63] (byte) print_byte::b#1 ← < (word) print_word::w#4 [ char_cursor#11 print_byte::b#1 ] ( main:2::mul_results_compare:13::print_word:32 [ mul_results_compare::ma#0 line_cursor#17 char_cursor#11 print_byte::b#1 ] main:2::mul_results_compare:13::print_word:36 [ line_cursor#17 char_cursor#11 print_byte::b#1 ] main:2::mul_tables_compare:11::print_word:96 [ mul_tables_compare::kc_sqr#2 char_cursor#11 print_byte::b#1 ] main:2::mul_tables_compare:11::print_word:100 [ char_cursor#11 print_byte::b#1 ] ) -- vbuxx=_lo_vwuz1 + lda w + tax + //SEG126 [64] call print_byte param-assignment [ char_cursor#11 ] ( main:2::mul_results_compare:13::print_word:32 [ mul_results_compare::ma#0 line_cursor#17 char_cursor#11 ] main:2::mul_results_compare:13::print_word:36 [ line_cursor#17 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:96 [ mul_tables_compare::kc_sqr#2 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:100 [ char_cursor#11 ] ) + //SEG127 [66] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] + print_byte_from_b1: + //SEG128 [66] phi (byte*) char_cursor#64 = (byte*) char_cursor#11 [phi:print_word::@1->print_byte#0] -- register_copy + //SEG129 [66] phi (byte) print_byte::b#2 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#1] -- register_copy + jsr print_byte + jmp breturn + //SEG130 print_word::@return + breturn: + //SEG131 [65] return [ char_cursor#11 ] ( main:2::mul_results_compare:13::print_word:32 [ mul_results_compare::ma#0 line_cursor#17 char_cursor#11 ] main:2::mul_results_compare:13::print_word:36 [ line_cursor#17 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:96 [ mul_tables_compare::kc_sqr#2 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:100 [ char_cursor#11 ] ) + rts +} +//SEG132 print_byte +print_byte: { + //SEG133 [67] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word) 4 [ print_byte::b#2 char_cursor#64 print_byte::$0 ] ( main:2::mul_results_compare:13::print_word:32::print_byte:62 [ mul_results_compare::ma#0 line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#64 print_byte::$0 ] main:2::mul_results_compare:13::print_word:36::print_byte:62 [ line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#64 print_byte::$0 ] main:2::mul_tables_compare:11::print_word:96::print_byte:62 [ mul_tables_compare::kc_sqr#2 print_word::w#4 print_byte::b#2 char_cursor#64 print_byte::$0 ] main:2::mul_tables_compare:11::print_word:100::print_byte:62 [ print_word::w#4 print_byte::b#2 char_cursor#64 print_byte::$0 ] main:2::mul_results_compare:13::print_word:32::print_byte:64 [ mul_results_compare::ma#0 line_cursor#17 print_byte::b#2 char_cursor#64 print_byte::$0 ] main:2::mul_results_compare:13::print_word:36::print_byte:64 [ line_cursor#17 print_byte::b#2 char_cursor#64 print_byte::$0 ] main:2::mul_tables_compare:11::print_word:96::print_byte:64 [ mul_tables_compare::kc_sqr#2 print_byte::b#2 char_cursor#64 print_byte::$0 ] main:2::mul_tables_compare:11::print_word:100::print_byte:64 [ print_byte::b#2 char_cursor#64 print_byte::$0 ] ) -- vbuyy=vbuxx_ror_4 + txa + lsr + lsr + lsr + lsr + tay + //SEG134 [68] (byte) print_char::ch#0 ← *((const byte[]) print_byte::hextab#0 + (byte~) print_byte::$0) [ print_byte::b#2 char_cursor#64 print_char::ch#0 ] ( main:2::mul_results_compare:13::print_word:32::print_byte:62 [ mul_results_compare::ma#0 line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#64 print_char::ch#0 ] main:2::mul_results_compare:13::print_word:36::print_byte:62 [ line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#64 print_char::ch#0 ] main:2::mul_tables_compare:11::print_word:96::print_byte:62 [ mul_tables_compare::kc_sqr#2 print_word::w#4 print_byte::b#2 char_cursor#64 print_char::ch#0 ] main:2::mul_tables_compare:11::print_word:100::print_byte:62 [ print_word::w#4 print_byte::b#2 char_cursor#64 print_char::ch#0 ] main:2::mul_results_compare:13::print_word:32::print_byte:64 [ mul_results_compare::ma#0 line_cursor#17 print_byte::b#2 char_cursor#64 print_char::ch#0 ] main:2::mul_results_compare:13::print_word:36::print_byte:64 [ line_cursor#17 print_byte::b#2 char_cursor#64 print_char::ch#0 ] main:2::mul_tables_compare:11::print_word:96::print_byte:64 [ mul_tables_compare::kc_sqr#2 print_byte::b#2 char_cursor#64 print_char::ch#0 ] main:2::mul_tables_compare:11::print_word:100::print_byte:64 [ print_byte::b#2 char_cursor#64 print_char::ch#0 ] ) -- vbuaa=pbuc1_derefidx_vbuyy + lda hextab,y + //SEG135 [69] call print_char param-assignment [ char_cursor#11 print_byte::b#2 ] ( main:2::mul_results_compare:13::print_word:32::print_byte:62 [ mul_results_compare::ma#0 line_cursor#17 print_word::w#4 char_cursor#11 print_byte::b#2 ] main:2::mul_results_compare:13::print_word:36::print_byte:62 [ line_cursor#17 print_word::w#4 char_cursor#11 print_byte::b#2 ] main:2::mul_tables_compare:11::print_word:96::print_byte:62 [ mul_tables_compare::kc_sqr#2 print_word::w#4 char_cursor#11 print_byte::b#2 ] main:2::mul_tables_compare:11::print_word:100::print_byte:62 [ print_word::w#4 char_cursor#11 print_byte::b#2 ] main:2::mul_results_compare:13::print_word:32::print_byte:64 [ mul_results_compare::ma#0 line_cursor#17 char_cursor#11 print_byte::b#2 ] main:2::mul_results_compare:13::print_word:36::print_byte:64 [ line_cursor#17 char_cursor#11 print_byte::b#2 ] main:2::mul_tables_compare:11::print_word:96::print_byte:64 [ mul_tables_compare::kc_sqr#2 char_cursor#11 print_byte::b#2 ] main:2::mul_tables_compare:11::print_word:100::print_byte:64 [ char_cursor#11 print_byte::b#2 ] ) + //SEG136 [74] phi from print_byte to print_char [phi:print_byte->print_char] + print_char_from_print_byte: + //SEG137 [74] phi (byte*) char_cursor#41 = (byte*) char_cursor#64 [phi:print_byte->print_char#0] -- register_copy + //SEG138 [74] phi (byte) print_char::ch#2 = (byte) print_char::ch#0 [phi:print_byte->print_char#1] -- register_copy + jsr print_char + jmp b1 + //SEG139 print_byte::@1 + b1: + //SEG140 [70] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word) 15 [ char_cursor#11 print_byte::$2 ] ( main:2::mul_results_compare:13::print_word:32::print_byte:62 [ mul_results_compare::ma#0 line_cursor#17 print_word::w#4 char_cursor#11 print_byte::$2 ] main:2::mul_results_compare:13::print_word:36::print_byte:62 [ line_cursor#17 print_word::w#4 char_cursor#11 print_byte::$2 ] main:2::mul_tables_compare:11::print_word:96::print_byte:62 [ mul_tables_compare::kc_sqr#2 print_word::w#4 char_cursor#11 print_byte::$2 ] main:2::mul_tables_compare:11::print_word:100::print_byte:62 [ print_word::w#4 char_cursor#11 print_byte::$2 ] main:2::mul_results_compare:13::print_word:32::print_byte:64 [ mul_results_compare::ma#0 line_cursor#17 char_cursor#11 print_byte::$2 ] main:2::mul_results_compare:13::print_word:36::print_byte:64 [ line_cursor#17 char_cursor#11 print_byte::$2 ] main:2::mul_tables_compare:11::print_word:96::print_byte:64 [ mul_tables_compare::kc_sqr#2 char_cursor#11 print_byte::$2 ] main:2::mul_tables_compare:11::print_word:100::print_byte:64 [ char_cursor#11 print_byte::$2 ] ) -- vbuaa=vbuxx_band_vbuc1 + txa + and #$f + //SEG141 [71] (byte) print_char::ch#1 ← *((const byte[]) print_byte::hextab#0 + (byte~) print_byte::$2) [ char_cursor#11 print_char::ch#1 ] ( main:2::mul_results_compare:13::print_word:32::print_byte:62 [ mul_results_compare::ma#0 line_cursor#17 print_word::w#4 char_cursor#11 print_char::ch#1 ] main:2::mul_results_compare:13::print_word:36::print_byte:62 [ line_cursor#17 print_word::w#4 char_cursor#11 print_char::ch#1 ] main:2::mul_tables_compare:11::print_word:96::print_byte:62 [ mul_tables_compare::kc_sqr#2 print_word::w#4 char_cursor#11 print_char::ch#1 ] main:2::mul_tables_compare:11::print_word:100::print_byte:62 [ print_word::w#4 char_cursor#11 print_char::ch#1 ] main:2::mul_results_compare:13::print_word:32::print_byte:64 [ mul_results_compare::ma#0 line_cursor#17 char_cursor#11 print_char::ch#1 ] main:2::mul_results_compare:13::print_word:36::print_byte:64 [ line_cursor#17 char_cursor#11 print_char::ch#1 ] main:2::mul_tables_compare:11::print_word:96::print_byte:64 [ mul_tables_compare::kc_sqr#2 char_cursor#11 print_char::ch#1 ] main:2::mul_tables_compare:11::print_word:100::print_byte:64 [ char_cursor#11 print_char::ch#1 ] ) -- vbuaa=pbuc1_derefidx_vbuaa + tax + lda hextab,x + //SEG142 [72] call print_char param-assignment [ char_cursor#11 ] ( main:2::mul_results_compare:13::print_word:32::print_byte:62 [ mul_results_compare::ma#0 line_cursor#17 print_word::w#4 char_cursor#11 ] main:2::mul_results_compare:13::print_word:36::print_byte:62 [ line_cursor#17 print_word::w#4 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:96::print_byte:62 [ mul_tables_compare::kc_sqr#2 print_word::w#4 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:100::print_byte:62 [ print_word::w#4 char_cursor#11 ] main:2::mul_results_compare:13::print_word:32::print_byte:64 [ mul_results_compare::ma#0 line_cursor#17 char_cursor#11 ] main:2::mul_results_compare:13::print_word:36::print_byte:64 [ line_cursor#17 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:96::print_byte:64 [ mul_tables_compare::kc_sqr#2 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:100::print_byte:64 [ char_cursor#11 ] ) + //SEG143 [74] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] + print_char_from_b1: + //SEG144 [74] phi (byte*) char_cursor#41 = (byte*) char_cursor#11 [phi:print_byte::@1->print_char#0] -- register_copy + //SEG145 [74] phi (byte) print_char::ch#2 = (byte) print_char::ch#1 [phi:print_byte::@1->print_char#1] -- register_copy + jsr print_char + jmp breturn + //SEG146 print_byte::@return + breturn: + //SEG147 [73] return [ char_cursor#11 ] ( main:2::mul_results_compare:13::print_word:32::print_byte:62 [ mul_results_compare::ma#0 line_cursor#17 print_word::w#4 char_cursor#11 ] main:2::mul_results_compare:13::print_word:36::print_byte:62 [ line_cursor#17 print_word::w#4 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:96::print_byte:62 [ mul_tables_compare::kc_sqr#2 print_word::w#4 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:100::print_byte:62 [ print_word::w#4 char_cursor#11 ] main:2::mul_results_compare:13::print_word:32::print_byte:64 [ mul_results_compare::ma#0 line_cursor#17 char_cursor#11 ] main:2::mul_results_compare:13::print_word:36::print_byte:64 [ line_cursor#17 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:96::print_byte:64 [ mul_tables_compare::kc_sqr#2 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:100::print_byte:64 [ char_cursor#11 ] ) + rts + hextab: .byte '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' +} +//SEG148 print_char +print_char: { + //SEG149 [75] *((byte*) char_cursor#41) ← (byte) print_char::ch#2 [ char_cursor#41 ] ( main:2::mul_results_compare:13::print_word:32::print_byte:62::print_char:69 [ mul_results_compare::ma#0 line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#41 ] main:2::mul_results_compare:13::print_word:36::print_byte:62::print_char:69 [ line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#41 ] main:2::mul_tables_compare:11::print_word:96::print_byte:62::print_char:69 [ mul_tables_compare::kc_sqr#2 print_word::w#4 print_byte::b#2 char_cursor#41 ] main:2::mul_tables_compare:11::print_word:100::print_byte:62::print_char:69 [ print_word::w#4 print_byte::b#2 char_cursor#41 ] main:2::mul_results_compare:13::print_word:32::print_byte:64::print_char:69 [ mul_results_compare::ma#0 line_cursor#17 print_byte::b#2 char_cursor#41 ] main:2::mul_results_compare:13::print_word:36::print_byte:64::print_char:69 [ line_cursor#17 print_byte::b#2 char_cursor#41 ] main:2::mul_tables_compare:11::print_word:96::print_byte:64::print_char:69 [ mul_tables_compare::kc_sqr#2 print_byte::b#2 char_cursor#41 ] main:2::mul_tables_compare:11::print_word:100::print_byte:64::print_char:69 [ print_byte::b#2 char_cursor#41 ] main:2::mul_results_compare:13::print_word:32::print_byte:62::print_char:72 [ mul_results_compare::ma#0 line_cursor#17 print_word::w#4 char_cursor#41 ] main:2::mul_results_compare:13::print_word:36::print_byte:62::print_char:72 [ line_cursor#17 print_word::w#4 char_cursor#41 ] main:2::mul_tables_compare:11::print_word:96::print_byte:62::print_char:72 [ mul_tables_compare::kc_sqr#2 print_word::w#4 char_cursor#41 ] main:2::mul_tables_compare:11::print_word:100::print_byte:62::print_char:72 [ print_word::w#4 char_cursor#41 ] main:2::mul_results_compare:13::print_word:32::print_byte:64::print_char:72 [ mul_results_compare::ma#0 line_cursor#17 char_cursor#41 ] main:2::mul_results_compare:13::print_word:36::print_byte:64::print_char:72 [ line_cursor#17 char_cursor#41 ] main:2::mul_tables_compare:11::print_word:96::print_byte:64::print_char:72 [ mul_tables_compare::kc_sqr#2 char_cursor#41 ] main:2::mul_tables_compare:11::print_word:100::print_byte:64::print_char:72 [ char_cursor#41 ] ) -- _deref_pbuz1=vbuaa + ldy #0 + sta (char_cursor),y + //SEG150 [76] (byte*) char_cursor#11 ← ++ (byte*) char_cursor#41 [ char_cursor#11 ] ( main:2::mul_results_compare:13::print_word:32::print_byte:62::print_char:69 [ mul_results_compare::ma#0 line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#11 ] main:2::mul_results_compare:13::print_word:36::print_byte:62::print_char:69 [ line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:96::print_byte:62::print_char:69 [ mul_tables_compare::kc_sqr#2 print_word::w#4 print_byte::b#2 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:100::print_byte:62::print_char:69 [ print_word::w#4 print_byte::b#2 char_cursor#11 ] main:2::mul_results_compare:13::print_word:32::print_byte:64::print_char:69 [ mul_results_compare::ma#0 line_cursor#17 print_byte::b#2 char_cursor#11 ] main:2::mul_results_compare:13::print_word:36::print_byte:64::print_char:69 [ line_cursor#17 print_byte::b#2 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:96::print_byte:64::print_char:69 [ mul_tables_compare::kc_sqr#2 print_byte::b#2 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:100::print_byte:64::print_char:69 [ print_byte::b#2 char_cursor#11 ] main:2::mul_results_compare:13::print_word:32::print_byte:62::print_char:72 [ mul_results_compare::ma#0 line_cursor#17 print_word::w#4 char_cursor#11 ] main:2::mul_results_compare:13::print_word:36::print_byte:62::print_char:72 [ line_cursor#17 print_word::w#4 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:96::print_byte:62::print_char:72 [ mul_tables_compare::kc_sqr#2 print_word::w#4 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:100::print_byte:62::print_char:72 [ print_word::w#4 char_cursor#11 ] main:2::mul_results_compare:13::print_word:32::print_byte:64::print_char:72 [ mul_results_compare::ma#0 line_cursor#17 char_cursor#11 ] main:2::mul_results_compare:13::print_word:36::print_byte:64::print_char:72 [ line_cursor#17 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:96::print_byte:64::print_char:72 [ mul_tables_compare::kc_sqr#2 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:100::print_byte:64::print_char:72 [ char_cursor#11 ] ) -- pbuz1=_inc_pbuz1 + inc char_cursor + bne !+ + inc char_cursor+1 + !: + jmp breturn + //SEG151 print_char::@return + breturn: + //SEG152 [77] return [ char_cursor#11 ] ( main:2::mul_results_compare:13::print_word:32::print_byte:62::print_char:69 [ mul_results_compare::ma#0 line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#11 ] main:2::mul_results_compare:13::print_word:36::print_byte:62::print_char:69 [ line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:96::print_byte:62::print_char:69 [ mul_tables_compare::kc_sqr#2 print_word::w#4 print_byte::b#2 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:100::print_byte:62::print_char:69 [ print_word::w#4 print_byte::b#2 char_cursor#11 ] main:2::mul_results_compare:13::print_word:32::print_byte:64::print_char:69 [ mul_results_compare::ma#0 line_cursor#17 print_byte::b#2 char_cursor#11 ] main:2::mul_results_compare:13::print_word:36::print_byte:64::print_char:69 [ line_cursor#17 print_byte::b#2 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:96::print_byte:64::print_char:69 [ mul_tables_compare::kc_sqr#2 print_byte::b#2 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:100::print_byte:64::print_char:69 [ print_byte::b#2 char_cursor#11 ] main:2::mul_results_compare:13::print_word:32::print_byte:62::print_char:72 [ mul_results_compare::ma#0 line_cursor#17 print_word::w#4 char_cursor#11 ] main:2::mul_results_compare:13::print_word:36::print_byte:62::print_char:72 [ line_cursor#17 print_word::w#4 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:96::print_byte:62::print_char:72 [ mul_tables_compare::kc_sqr#2 print_word::w#4 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:100::print_byte:62::print_char:72 [ print_word::w#4 char_cursor#11 ] main:2::mul_results_compare:13::print_word:32::print_byte:64::print_char:72 [ mul_results_compare::ma#0 line_cursor#17 char_cursor#11 ] main:2::mul_results_compare:13::print_word:36::print_byte:64::print_char:72 [ line_cursor#17 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:96::print_byte:64::print_char:72 [ mul_tables_compare::kc_sqr#2 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:100::print_byte:64::print_char:72 [ char_cursor#11 ] ) + rts +} +//SEG153 asm_multiply +asm_multiply: { + .const memA = $fe + .const memB = $ff + .label return = 6 + //SEG154 [78] *((const byte*) asm_multiply::memA#0) ← (byte) asm_multiply::a#0 [ asm_multiply::b#0 ] ( main:2::mul_results_compare:13::asm_multiply:25 [ mul_results_compare::a#5 mul_results_compare::b#2 mul_results_compare::ms#0 line_cursor#17 char_cursor#20 asm_multiply::b#0 ] ) -- _deref_pbuc1=vbuxx + stx memA + //SEG155 [79] *((const byte*) asm_multiply::memB#0) ← (byte) asm_multiply::b#0 [ ] ( main:2::mul_results_compare:13::asm_multiply:25 [ mul_results_compare::a#5 mul_results_compare::b#2 mul_results_compare::ms#0 line_cursor#17 char_cursor#20 ] ) -- _deref_pbuc1=vbuaa + sta memB + //SEG156 asm { ldamemAstasm1+1stasm3+1eor#$ffstasm2+1stasm4+1ldxmemBsecsm1:ldaasm_mul_sqr1_lo,xsm2:sbcasm_mul_sqr2_lo,xstamemAsm3:ldaasm_mul_sqr1_hi,xsm4:sbcasm_mul_sqr2_hi,xstamemB } + lda memA + sta sm1+1 + sta sm3+1 + eor #$ff + sta sm2+1 + sta sm4+1 + ldx memB + sec + sm1: + lda asm_mul_sqr1_lo,x + sm2: + sbc asm_mul_sqr2_lo,x + sta memA + sm3: + lda asm_mul_sqr1_hi,x + sm4: + sbc asm_mul_sqr2_hi,x + sta memB + //SEG157 [81] (word) asm_multiply::return#0 ← *((const byte*) asm_multiply::memB#0) w= *((const byte*) asm_multiply::memA#0) [ asm_multiply::return#0 ] ( main:2::mul_results_compare:13::asm_multiply:25 [ mul_results_compare::a#5 mul_results_compare::b#2 mul_results_compare::ms#0 line_cursor#17 char_cursor#20 asm_multiply::return#0 ] ) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 + lda memA + sta return + lda memB + sta return+1 + jmp breturn + //SEG158 asm_multiply::@return + breturn: + //SEG159 [82] return [ asm_multiply::return#0 ] ( main:2::mul_results_compare:13::asm_multiply:25 [ mul_results_compare::a#5 mul_results_compare::b#2 mul_results_compare::ms#0 line_cursor#17 char_cursor#20 asm_multiply::return#0 ] ) + rts +} +//SEG160 slow_multiply +slow_multiply: { + .label return = 6 + .label m = 6 + .label a = 2 + //SEG161 [83] if((byte) slow_multiply::a#0<=(byte/signed byte/word/signed word) 0) goto slow_multiply::@1 [ slow_multiply::a#0 slow_multiply::b#0 ] ( main:2::mul_results_compare:13::slow_multiply:20 [ mul_results_compare::a#5 mul_results_compare::b#2 line_cursor#17 char_cursor#20 slow_multiply::a#0 slow_multiply::b#0 ] ) -- vbuz1_le_0_then_la1 + lda a + cmp #0 + beq b1_from_slow_multiply + //SEG162 [84] phi from slow_multiply to slow_multiply::@2 [phi:slow_multiply->slow_multiply::@2] + b2_from_slow_multiply: + //SEG163 [84] phi (byte) slow_multiply::i#2 = (byte/signed byte/word/signed word) 0 [phi:slow_multiply->slow_multiply::@2#0] -- vbuyy=vbuc1 + ldy #0 + //SEG164 [84] phi (word) slow_multiply::m#3 = (byte/signed byte/word/signed word) 0 [phi:slow_multiply->slow_multiply::@2#1] -- vwuz1=vbuc1 + lda #0 + sta m + lda #0 + sta m+1 + jmp b2 + //SEG165 [84] phi from slow_multiply::@2 to slow_multiply::@2 [phi:slow_multiply::@2->slow_multiply::@2] + b2_from_b2: + //SEG166 [84] phi (byte) slow_multiply::i#2 = (byte) slow_multiply::i#1 [phi:slow_multiply::@2->slow_multiply::@2#0] -- register_copy + //SEG167 [84] phi (word) slow_multiply::m#3 = (word) slow_multiply::m#1 [phi:slow_multiply::@2->slow_multiply::@2#1] -- register_copy + jmp b2 + //SEG168 slow_multiply::@2 + b2: + //SEG169 [85] (word) slow_multiply::m#1 ← (word) slow_multiply::m#3 + (byte) slow_multiply::b#0 [ slow_multiply::a#0 slow_multiply::b#0 slow_multiply::i#2 slow_multiply::m#1 ] ( main:2::mul_results_compare:13::slow_multiply:20 [ mul_results_compare::a#5 mul_results_compare::b#2 line_cursor#17 char_cursor#20 slow_multiply::a#0 slow_multiply::b#0 slow_multiply::i#2 slow_multiply::m#1 ] ) -- vwuz1=vwuz1_plus_vbuxx + txa + clc + adc m + sta m + bcc !+ + inc m+1 + !: + //SEG170 [86] (byte) slow_multiply::i#1 ← ++ (byte) slow_multiply::i#2 [ slow_multiply::a#0 slow_multiply::b#0 slow_multiply::m#1 slow_multiply::i#1 ] ( main:2::mul_results_compare:13::slow_multiply:20 [ mul_results_compare::a#5 mul_results_compare::b#2 line_cursor#17 char_cursor#20 slow_multiply::a#0 slow_multiply::b#0 slow_multiply::m#1 slow_multiply::i#1 ] ) -- vbuyy=_inc_vbuyy + iny + //SEG171 [87] if((byte) slow_multiply::i#1!=(byte) slow_multiply::a#0) goto slow_multiply::@2 [ slow_multiply::a#0 slow_multiply::b#0 slow_multiply::m#1 slow_multiply::i#1 ] ( main:2::mul_results_compare:13::slow_multiply:20 [ mul_results_compare::a#5 mul_results_compare::b#2 line_cursor#17 char_cursor#20 slow_multiply::a#0 slow_multiply::b#0 slow_multiply::m#1 slow_multiply::i#1 ] ) -- vbuyy_neq_vbuz1_then_la1 + cpy a + bne b2_from_b2 + //SEG172 [88] phi from slow_multiply::@2 to slow_multiply::@1 [phi:slow_multiply::@2->slow_multiply::@1] + b1_from_b2: + //SEG173 [88] phi (word) slow_multiply::return#0 = (word) slow_multiply::m#1 [phi:slow_multiply::@2->slow_multiply::@1#0] -- register_copy + jmp b1 + //SEG174 [88] phi from slow_multiply to slow_multiply::@1 [phi:slow_multiply->slow_multiply::@1] + b1_from_slow_multiply: + //SEG175 [88] phi (word) slow_multiply::return#0 = (byte/signed byte/word/signed word) 0 [phi:slow_multiply->slow_multiply::@1#0] -- vwuz1=vbuc1 + lda #0 + sta return + lda #0 + sta return+1 + jmp b1 + //SEG176 slow_multiply::@1 + b1: + jmp breturn + //SEG177 slow_multiply::@return + breturn: + //SEG178 [89] return [ slow_multiply::return#0 ] ( main:2::mul_results_compare:13::slow_multiply:20 [ mul_results_compare::a#5 mul_results_compare::b#2 line_cursor#17 char_cursor#20 slow_multiply::return#0 ] ) + rts +} +//SEG179 mul_tables_compare +mul_tables_compare: { + .label asm_sqr = $a + .label kc_sqr = 4 + //SEG180 [91] phi from mul_tables_compare to mul_tables_compare::@1 [phi:mul_tables_compare->mul_tables_compare::@1] b1_from_mul_tables_compare: - //SEG23 [12] phi (byte*) mul_tables_compare::asm_sqr#2 = (const byte[512]) asm_mul_sqr1_lo#0 [phi:mul_tables_compare->mul_tables_compare::@1#0] -- pbuz1=pbuc1 + //SEG181 [91] phi (byte*) mul_tables_compare::asm_sqr#2 = (const byte[512]) asm_mul_sqr1_lo#0 [phi:mul_tables_compare->mul_tables_compare::@1#0] -- pbuz1=pbuc1 lda #asm_mul_sqr1_lo sta asm_sqr+1 - //SEG24 [12] phi (byte*) mul_tables_compare::kc_sqr#2 = (const byte[512]) mul_sqr1_lo#0 [phi:mul_tables_compare->mul_tables_compare::@1#1] -- pbuz1=pbuc1 + //SEG182 [91] phi (byte*) mul_tables_compare::kc_sqr#2 = (const byte[512]) mul_sqr1_lo#0 [phi:mul_tables_compare->mul_tables_compare::@1#1] -- pbuz1=pbuc1 lda #mul_sqr1_lo sta kc_sqr+1 jmp b1 - //SEG25 [12] phi from mul_tables_compare::@2 to mul_tables_compare::@1 [phi:mul_tables_compare::@2->mul_tables_compare::@1] + //SEG183 [91] phi from mul_tables_compare::@2 to mul_tables_compare::@1 [phi:mul_tables_compare::@2->mul_tables_compare::@1] b1_from_b2: - //SEG26 [12] phi (byte*) mul_tables_compare::asm_sqr#2 = (byte*) mul_tables_compare::asm_sqr#1 [phi:mul_tables_compare::@2->mul_tables_compare::@1#0] -- register_copy - //SEG27 [12] phi (byte*) mul_tables_compare::kc_sqr#2 = (byte*) mul_tables_compare::kc_sqr#1 [phi:mul_tables_compare::@2->mul_tables_compare::@1#1] -- register_copy + //SEG184 [91] phi (byte*) mul_tables_compare::asm_sqr#2 = (byte*) mul_tables_compare::asm_sqr#1 [phi:mul_tables_compare::@2->mul_tables_compare::@1#0] -- register_copy + //SEG185 [91] phi (byte*) mul_tables_compare::kc_sqr#2 = (byte*) mul_tables_compare::kc_sqr#1 [phi:mul_tables_compare::@2->mul_tables_compare::@1#1] -- register_copy jmp b1 - //SEG28 mul_tables_compare::@1 + //SEG186 mul_tables_compare::@1 b1: - //SEG29 [13] if(*((byte*) mul_tables_compare::kc_sqr#2)==*((byte*) mul_tables_compare::asm_sqr#2)) goto mul_tables_compare::@2 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 ] ( main:2::mul_tables_compare:9 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 ] ) -- _deref_pbuz1_eq__deref_pbuz2_then_la1 + //SEG187 [92] if(*((byte*) mul_tables_compare::kc_sqr#2)==*((byte*) mul_tables_compare::asm_sqr#2)) goto mul_tables_compare::@2 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 ] ( main:2::mul_tables_compare:11 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 ] ) -- _deref_pbuz1_eq__deref_pbuz2_then_la1 ldy #0 lda (kc_sqr),y ldy #0 cmp (asm_sqr),y beq b2 jmp b3 - //SEG30 mul_tables_compare::@3 + //SEG188 mul_tables_compare::@3 b3: - //SEG31 [14] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 2 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 ] ( main:2::mul_tables_compare:9 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 ] ) -- _deref_pbuc1=vbuc2 + //SEG189 [93] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 2 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 ] ( main:2::mul_tables_compare:11 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 ] ) -- _deref_pbuc1=vbuc2 lda #2 sta BGCOL - //SEG32 [15] call print_cls param-assignment [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 ] ( main:2::mul_tables_compare:9 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 ] ) - //SEG33 [54] phi from mul_tables_compare::@3 to print_cls [phi:mul_tables_compare::@3->print_cls] - print_cls_from_b3: - jsr print_cls - //SEG34 [16] phi from mul_tables_compare::@3 to mul_tables_compare::@6 [phi:mul_tables_compare::@3->mul_tables_compare::@6] - b6_from_b3: - jmp b6 - //SEG35 mul_tables_compare::@6 - b6: - //SEG36 [17] call print_str param-assignment [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 char_cursor#19 ] ( main:2::mul_tables_compare:9 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 char_cursor#19 ] ) - //SEG37 [47] phi from mul_tables_compare::@6 to print_str [phi:mul_tables_compare::@6->print_str] - print_str_from_b6: - //SEG38 [47] phi (byte*) char_cursor#44 = ((byte*))(word/signed word) 1024 [phi:mul_tables_compare::@6->print_str#0] -- pbuz1=pbuc1 + //SEG190 [94] call print_str param-assignment [ char_cursor#2 mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 ] ( main:2::mul_tables_compare:11 [ char_cursor#2 mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 ] ) + //SEG191 [53] phi from mul_tables_compare::@3 to print_str [phi:mul_tables_compare::@3->print_str] + print_str_from_b3: + //SEG192 [53] phi (byte*) char_cursor#71 = ((byte*))(word/signed word) 1024 [phi:mul_tables_compare::@3->print_str#0] -- pbuz1=pbuc1 lda #<$400 sta char_cursor lda #>$400 sta char_cursor+1 - //SEG39 [47] phi (byte*) print_str::str#5 = (const string) mul_tables_compare::str [phi:mul_tables_compare::@6->print_str#1] -- pbuz1=pbuc1 + //SEG193 [53] phi (byte*) print_str::str#9 = (const string) mul_tables_compare::str [phi:mul_tables_compare::@3->print_str#1] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str - jmp b7 - //SEG40 mul_tables_compare::@7 - b7: - //SEG41 [18] (word) print_word::w#0 ← ((word)) (byte*) mul_tables_compare::asm_sqr#2 [ mul_tables_compare::kc_sqr#2 print_word::w#0 char_cursor#19 ] ( main:2::mul_tables_compare:9 [ mul_tables_compare::kc_sqr#2 print_word::w#0 char_cursor#19 ] ) -- vwuz1=_word_pbuz1 - //SEG42 [19] call print_word param-assignment [ mul_tables_compare::kc_sqr#2 char_cursor#10 ] ( main:2::mul_tables_compare:9 [ mul_tables_compare::kc_sqr#2 char_cursor#10 ] ) - //SEG43 [29] phi from mul_tables_compare::@7 to print_word [phi:mul_tables_compare::@7->print_word] - print_word_from_b7: - //SEG44 [29] phi (word) print_word::w#2 = (word) print_word::w#0 [phi:mul_tables_compare::@7->print_word#0] -- register_copy + jmp b6 + //SEG194 mul_tables_compare::@6 + b6: + //SEG195 [95] (word) print_word::w#0 ← ((word)) (byte*) mul_tables_compare::asm_sqr#2 [ char_cursor#2 print_word::w#0 mul_tables_compare::kc_sqr#2 ] ( main:2::mul_tables_compare:11 [ char_cursor#2 print_word::w#0 mul_tables_compare::kc_sqr#2 ] ) -- vwuz1=_word_pbuz2 + lda asm_sqr + sta print_word.w + lda asm_sqr+1 + sta print_word.w+1 + //SEG196 [96] call print_word param-assignment [ char_cursor#11 mul_tables_compare::kc_sqr#2 ] ( main:2::mul_tables_compare:11 [ char_cursor#11 mul_tables_compare::kc_sqr#2 ] ) + //SEG197 [60] phi from mul_tables_compare::@6 to print_word [phi:mul_tables_compare::@6->print_word] + print_word_from_b6: + //SEG198 [60] phi (word) print_word::w#4 = (word) print_word::w#0 [phi:mul_tables_compare::@6->print_word#0] -- register_copy jsr print_word - //SEG45 [20] phi from mul_tables_compare::@7 to mul_tables_compare::@8 [phi:mul_tables_compare::@7->mul_tables_compare::@8] - b8_from_b7: - jmp b8 - //SEG46 mul_tables_compare::@8 - b8: - //SEG47 [21] call print_str param-assignment [ mul_tables_compare::kc_sqr#2 char_cursor#19 ] ( main:2::mul_tables_compare:9 [ mul_tables_compare::kc_sqr#2 char_cursor#19 ] ) - //SEG48 [47] phi from mul_tables_compare::@8 to print_str [phi:mul_tables_compare::@8->print_str] - print_str_from_b8: - //SEG49 [47] phi (byte*) char_cursor#44 = (byte*) char_cursor#10 [phi:mul_tables_compare::@8->print_str#0] -- register_copy - //SEG50 [47] phi (byte*) print_str::str#5 = (const string) mul_tables_compare::str1 [phi:mul_tables_compare::@8->print_str#1] -- pbuz1=pbuc1 + //SEG199 [97] phi from mul_tables_compare::@6 to mul_tables_compare::@7 [phi:mul_tables_compare::@6->mul_tables_compare::@7] + b7_from_b6: + jmp b7 + //SEG200 mul_tables_compare::@7 + b7: + //SEG201 [98] call print_str param-assignment [ char_cursor#2 mul_tables_compare::kc_sqr#2 ] ( main:2::mul_tables_compare:11 [ char_cursor#2 mul_tables_compare::kc_sqr#2 ] ) + //SEG202 [53] phi from mul_tables_compare::@7 to print_str [phi:mul_tables_compare::@7->print_str] + print_str_from_b7: + //SEG203 [53] phi (byte*) char_cursor#71 = (byte*) char_cursor#11 [phi:mul_tables_compare::@7->print_str#0] -- register_copy + //SEG204 [53] phi (byte*) print_str::str#9 = (const string) mul_tables_compare::str1 [phi:mul_tables_compare::@7->print_str#1] -- pbuz1=pbuc1 lda #str1 sta print_str.str+1 jsr print_str - jmp b9 - //SEG51 mul_tables_compare::@9 - b9: - //SEG52 [22] (word) print_word::w#1 ← ((word)) (byte*) mul_tables_compare::kc_sqr#2 [ print_word::w#1 char_cursor#19 ] ( main:2::mul_tables_compare:9 [ print_word::w#1 char_cursor#19 ] ) -- vwuz1=_word_pbuz2 + jmp b8 + //SEG205 mul_tables_compare::@8 + b8: + //SEG206 [99] (word) print_word::w#1 ← ((word)) (byte*) mul_tables_compare::kc_sqr#2 [ char_cursor#2 print_word::w#1 ] ( main:2::mul_tables_compare:11 [ char_cursor#2 print_word::w#1 ] ) -- vwuz1=_word_pbuz2 lda kc_sqr sta print_word.w lda kc_sqr+1 sta print_word.w+1 - //SEG53 [23] call print_word param-assignment [ char_cursor#10 ] ( main:2::mul_tables_compare:9 [ char_cursor#10 ] ) - //SEG54 [29] phi from mul_tables_compare::@9 to print_word [phi:mul_tables_compare::@9->print_word] - print_word_from_b9: - //SEG55 [29] phi (word) print_word::w#2 = (word) print_word::w#1 [phi:mul_tables_compare::@9->print_word#0] -- register_copy + //SEG207 [100] call print_word param-assignment [ char_cursor#11 ] ( main:2::mul_tables_compare:11 [ char_cursor#11 ] ) + //SEG208 [60] phi from mul_tables_compare::@8 to print_word [phi:mul_tables_compare::@8->print_word] + print_word_from_b8: + //SEG209 [60] phi (word) print_word::w#4 = (word) print_word::w#1 [phi:mul_tables_compare::@8->print_word#0] -- register_copy jsr print_word - //SEG56 [24] phi from mul_tables_compare::@9 to mul_tables_compare::@return [phi:mul_tables_compare::@9->mul_tables_compare::@return] - breturn_from_b9: - //SEG57 [24] phi (byte*) char_cursor#17 = (byte*) char_cursor#10 [phi:mul_tables_compare::@9->mul_tables_compare::@return#0] -- register_copy + //SEG210 [101] phi from mul_tables_compare::@8 to mul_tables_compare::@return [phi:mul_tables_compare::@8->mul_tables_compare::@return] + breturn_from_b8: + //SEG211 [101] phi (byte*) line_cursor#17 = ((byte*))(word/signed word) 1024 [phi:mul_tables_compare::@8->mul_tables_compare::@return#0] -- pbuz1=pbuc1 + lda #<$400 + sta line_cursor + lda #>$400 + sta line_cursor+1 + //SEG212 [101] phi (byte*) char_cursor#20 = (byte*) char_cursor#11 [phi:mul_tables_compare::@8->mul_tables_compare::@return#1] -- register_copy jmp breturn - //SEG58 mul_tables_compare::@return + //SEG213 mul_tables_compare::@return breturn: - //SEG59 [25] return [ ] ( main:2::mul_tables_compare:9 [ ] ) + //SEG214 [102] return [ line_cursor#17 char_cursor#20 ] ( main:2::mul_tables_compare:11 [ line_cursor#17 char_cursor#20 ] ) rts - //SEG60 mul_tables_compare::@2 + //SEG215 mul_tables_compare::@2 b2: - //SEG61 [26] (byte*) mul_tables_compare::asm_sqr#1 ← ++ (byte*) mul_tables_compare::asm_sqr#2 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#1 ] ( main:2::mul_tables_compare:9 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#1 ] ) -- pbuz1=_inc_pbuz1 + //SEG216 [103] (byte*) mul_tables_compare::asm_sqr#1 ← ++ (byte*) mul_tables_compare::asm_sqr#2 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#1 ] ( main:2::mul_tables_compare:11 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#1 ] ) -- pbuz1=_inc_pbuz1 inc asm_sqr bne !+ inc asm_sqr+1 !: - //SEG62 [27] (byte*) mul_tables_compare::kc_sqr#1 ← ++ (byte*) mul_tables_compare::kc_sqr#2 [ mul_tables_compare::kc_sqr#1 mul_tables_compare::asm_sqr#1 ] ( main:2::mul_tables_compare:9 [ mul_tables_compare::kc_sqr#1 mul_tables_compare::asm_sqr#1 ] ) -- pbuz1=_inc_pbuz1 + //SEG217 [104] (byte*) mul_tables_compare::kc_sqr#1 ← ++ (byte*) mul_tables_compare::kc_sqr#2 [ mul_tables_compare::kc_sqr#1 mul_tables_compare::asm_sqr#1 ] ( main:2::mul_tables_compare:11 [ mul_tables_compare::kc_sqr#1 mul_tables_compare::asm_sqr#1 ] ) -- pbuz1=_inc_pbuz1 inc kc_sqr bne !+ inc kc_sqr+1 !: - //SEG63 [28] if((byte*) mul_tables_compare::kc_sqr#1<(const byte[512]) mul_sqr1_lo#0+(word/signed word) 512*(byte/signed byte/word/signed word) 4) goto mul_tables_compare::@1 [ mul_tables_compare::kc_sqr#1 mul_tables_compare::asm_sqr#1 ] ( main:2::mul_tables_compare:9 [ mul_tables_compare::kc_sqr#1 mul_tables_compare::asm_sqr#1 ] ) -- pbuz1_lt_pbuc1_then_la1 + //SEG218 [105] if((byte*) mul_tables_compare::kc_sqr#1<(const byte[512]) mul_sqr1_lo#0+(word/signed word) 512*(byte/signed byte/word/signed word) 4) goto mul_tables_compare::@1 [ mul_tables_compare::kc_sqr#1 mul_tables_compare::asm_sqr#1 ] ( main:2::mul_tables_compare:11 [ mul_tables_compare::kc_sqr#1 mul_tables_compare::asm_sqr#1 ] ) -- pbuz1_lt_pbuc1_then_la1 lda kc_sqr+1 cmp #>mul_sqr1_lo+$200*4 bcc b1_from_b2 @@ -3191,185 +5507,57 @@ mul_tables_compare: { cmp #mul_tables_compare::@return] - breturn_from_b2: - //SEG65 [24] phi (byte*) char_cursor#17 = ((byte*))(word/signed word) 1024 [phi:mul_tables_compare::@2->mul_tables_compare::@return#0] -- pbuz1=pbuc1 + //SEG219 [106] phi from mul_tables_compare::@2 to mul_tables_compare::@5 [phi:mul_tables_compare::@2->mul_tables_compare::@5] + b5_from_b2: + jmp b5 + //SEG220 mul_tables_compare::@5 + b5: + //SEG221 [107] call print_str param-assignment [ char_cursor#2 ] ( main:2::mul_tables_compare:11 [ char_cursor#2 ] ) + //SEG222 [53] phi from mul_tables_compare::@5 to print_str [phi:mul_tables_compare::@5->print_str] + print_str_from_b5: + //SEG223 [53] phi (byte*) char_cursor#71 = ((byte*))(word/signed word) 1024 [phi:mul_tables_compare::@5->print_str#0] -- pbuz1=pbuc1 lda #<$400 sta char_cursor lda #>$400 sta char_cursor+1 - jmp breturn - str: .text "mul table mismatch at @" - str1: .text " / @" -} -//SEG66 print_word -print_word: { - .label w = 4 - //SEG67 [30] (byte) print_byte::b#0 ← > (word) print_word::w#2 [ print_word::w#2 print_byte::b#0 char_cursor#19 ] ( main:2::mul_tables_compare:9::print_word:19 [ mul_tables_compare::kc_sqr#2 print_word::w#2 print_byte::b#0 char_cursor#19 ] main:2::mul_tables_compare:9::print_word:23 [ print_word::w#2 print_byte::b#0 char_cursor#19 ] ) -- vbuxx=_hi_vwuz1 - lda w+1 - tax - //SEG68 [31] call print_byte param-assignment [ char_cursor#10 print_word::w#2 ] ( main:2::mul_tables_compare:9::print_word:19 [ mul_tables_compare::kc_sqr#2 char_cursor#10 print_word::w#2 ] main:2::mul_tables_compare:9::print_word:23 [ char_cursor#10 print_word::w#2 ] ) - //SEG69 [35] phi from print_word to print_byte [phi:print_word->print_byte] - print_byte_from_print_word: - //SEG70 [35] phi (byte*) char_cursor#39 = (byte*) char_cursor#19 [phi:print_word->print_byte#0] -- register_copy - //SEG71 [35] phi (byte) print_byte::b#2 = (byte) print_byte::b#0 [phi:print_word->print_byte#1] -- register_copy - jsr print_byte - jmp b1 - //SEG72 print_word::@1 - b1: - //SEG73 [32] (byte) print_byte::b#1 ← < (word) print_word::w#2 [ char_cursor#10 print_byte::b#1 ] ( main:2::mul_tables_compare:9::print_word:19 [ mul_tables_compare::kc_sqr#2 char_cursor#10 print_byte::b#1 ] main:2::mul_tables_compare:9::print_word:23 [ char_cursor#10 print_byte::b#1 ] ) -- vbuxx=_lo_vwuz1 - lda w - tax - //SEG74 [33] call print_byte param-assignment [ char_cursor#10 ] ( main:2::mul_tables_compare:9::print_word:19 [ mul_tables_compare::kc_sqr#2 char_cursor#10 ] main:2::mul_tables_compare:9::print_word:23 [ char_cursor#10 ] ) - //SEG75 [35] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] - print_byte_from_b1: - //SEG76 [35] phi (byte*) char_cursor#39 = (byte*) char_cursor#10 [phi:print_word::@1->print_byte#0] -- register_copy - //SEG77 [35] phi (byte) print_byte::b#2 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#1] -- register_copy - jsr print_byte - jmp breturn - //SEG78 print_word::@return - breturn: - //SEG79 [34] return [ char_cursor#10 ] ( main:2::mul_tables_compare:9::print_word:19 [ mul_tables_compare::kc_sqr#2 char_cursor#10 ] main:2::mul_tables_compare:9::print_word:23 [ char_cursor#10 ] ) - rts -} -//SEG80 print_byte -print_byte: { - //SEG81 [36] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word) 4 [ print_byte::b#2 char_cursor#39 print_byte::$0 ] ( main:2::mul_tables_compare:9::print_word:19::print_byte:31 [ mul_tables_compare::kc_sqr#2 print_word::w#2 print_byte::b#2 char_cursor#39 print_byte::$0 ] main:2::mul_tables_compare:9::print_word:23::print_byte:31 [ print_word::w#2 print_byte::b#2 char_cursor#39 print_byte::$0 ] main:2::mul_tables_compare:9::print_word:19::print_byte:33 [ mul_tables_compare::kc_sqr#2 print_byte::b#2 char_cursor#39 print_byte::$0 ] main:2::mul_tables_compare:9::print_word:23::print_byte:33 [ print_byte::b#2 char_cursor#39 print_byte::$0 ] ) -- vbuyy=vbuxx_ror_4 - txa - lsr - lsr - lsr - lsr - tay - //SEG82 [37] (byte) print_char::ch#0 ← *((const byte[]) print_byte::hextab#0 + (byte~) print_byte::$0) [ print_byte::b#2 char_cursor#39 print_char::ch#0 ] ( main:2::mul_tables_compare:9::print_word:19::print_byte:31 [ mul_tables_compare::kc_sqr#2 print_word::w#2 print_byte::b#2 char_cursor#39 print_char::ch#0 ] main:2::mul_tables_compare:9::print_word:23::print_byte:31 [ print_word::w#2 print_byte::b#2 char_cursor#39 print_char::ch#0 ] main:2::mul_tables_compare:9::print_word:19::print_byte:33 [ mul_tables_compare::kc_sqr#2 print_byte::b#2 char_cursor#39 print_char::ch#0 ] main:2::mul_tables_compare:9::print_word:23::print_byte:33 [ print_byte::b#2 char_cursor#39 print_char::ch#0 ] ) -- vbuaa=pbuc1_derefidx_vbuyy - lda hextab,y - //SEG83 [38] call print_char param-assignment [ char_cursor#10 print_byte::b#2 ] ( main:2::mul_tables_compare:9::print_word:19::print_byte:31 [ mul_tables_compare::kc_sqr#2 print_word::w#2 char_cursor#10 print_byte::b#2 ] main:2::mul_tables_compare:9::print_word:23::print_byte:31 [ print_word::w#2 char_cursor#10 print_byte::b#2 ] main:2::mul_tables_compare:9::print_word:19::print_byte:33 [ mul_tables_compare::kc_sqr#2 char_cursor#10 print_byte::b#2 ] main:2::mul_tables_compare:9::print_word:23::print_byte:33 [ char_cursor#10 print_byte::b#2 ] ) - //SEG84 [43] phi from print_byte to print_char [phi:print_byte->print_char] - print_char_from_print_byte: - //SEG85 [43] phi (byte*) char_cursor#27 = (byte*) char_cursor#39 [phi:print_byte->print_char#0] -- register_copy - //SEG86 [43] phi (byte) print_char::ch#2 = (byte) print_char::ch#0 [phi:print_byte->print_char#1] -- register_copy - jsr print_char - jmp b1 - //SEG87 print_byte::@1 - b1: - //SEG88 [39] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word) 15 [ char_cursor#10 print_byte::$2 ] ( main:2::mul_tables_compare:9::print_word:19::print_byte:31 [ mul_tables_compare::kc_sqr#2 print_word::w#2 char_cursor#10 print_byte::$2 ] main:2::mul_tables_compare:9::print_word:23::print_byte:31 [ print_word::w#2 char_cursor#10 print_byte::$2 ] main:2::mul_tables_compare:9::print_word:19::print_byte:33 [ mul_tables_compare::kc_sqr#2 char_cursor#10 print_byte::$2 ] main:2::mul_tables_compare:9::print_word:23::print_byte:33 [ char_cursor#10 print_byte::$2 ] ) -- vbuaa=vbuxx_band_vbuc1 - txa - and #$f - //SEG89 [40] (byte) print_char::ch#1 ← *((const byte[]) print_byte::hextab#0 + (byte~) print_byte::$2) [ char_cursor#10 print_char::ch#1 ] ( main:2::mul_tables_compare:9::print_word:19::print_byte:31 [ mul_tables_compare::kc_sqr#2 print_word::w#2 char_cursor#10 print_char::ch#1 ] main:2::mul_tables_compare:9::print_word:23::print_byte:31 [ print_word::w#2 char_cursor#10 print_char::ch#1 ] main:2::mul_tables_compare:9::print_word:19::print_byte:33 [ mul_tables_compare::kc_sqr#2 char_cursor#10 print_char::ch#1 ] main:2::mul_tables_compare:9::print_word:23::print_byte:33 [ char_cursor#10 print_char::ch#1 ] ) -- vbuaa=pbuc1_derefidx_vbuaa - tax - lda hextab,x - //SEG90 [41] call print_char param-assignment [ char_cursor#10 ] ( main:2::mul_tables_compare:9::print_word:19::print_byte:31 [ mul_tables_compare::kc_sqr#2 print_word::w#2 char_cursor#10 ] main:2::mul_tables_compare:9::print_word:23::print_byte:31 [ print_word::w#2 char_cursor#10 ] main:2::mul_tables_compare:9::print_word:19::print_byte:33 [ mul_tables_compare::kc_sqr#2 char_cursor#10 ] main:2::mul_tables_compare:9::print_word:23::print_byte:33 [ char_cursor#10 ] ) - //SEG91 [43] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] - print_char_from_b1: - //SEG92 [43] phi (byte*) char_cursor#27 = (byte*) char_cursor#10 [phi:print_byte::@1->print_char#0] -- register_copy - //SEG93 [43] phi (byte) print_char::ch#2 = (byte) print_char::ch#1 [phi:print_byte::@1->print_char#1] -- register_copy - jsr print_char - jmp breturn - //SEG94 print_byte::@return - breturn: - //SEG95 [42] return [ char_cursor#10 ] ( main:2::mul_tables_compare:9::print_word:19::print_byte:31 [ mul_tables_compare::kc_sqr#2 print_word::w#2 char_cursor#10 ] main:2::mul_tables_compare:9::print_word:23::print_byte:31 [ print_word::w#2 char_cursor#10 ] main:2::mul_tables_compare:9::print_word:19::print_byte:33 [ mul_tables_compare::kc_sqr#2 char_cursor#10 ] main:2::mul_tables_compare:9::print_word:23::print_byte:33 [ char_cursor#10 ] ) - rts - hextab: .byte '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' -} -//SEG96 print_char -print_char: { - //SEG97 [44] *((byte*) char_cursor#27) ← (byte) print_char::ch#2 [ char_cursor#27 ] ( main:2::mul_tables_compare:9::print_word:19::print_byte:31::print_char:38 [ mul_tables_compare::kc_sqr#2 print_word::w#2 print_byte::b#2 char_cursor#27 ] main:2::mul_tables_compare:9::print_word:23::print_byte:31::print_char:38 [ print_word::w#2 print_byte::b#2 char_cursor#27 ] main:2::mul_tables_compare:9::print_word:19::print_byte:33::print_char:38 [ mul_tables_compare::kc_sqr#2 print_byte::b#2 char_cursor#27 ] main:2::mul_tables_compare:9::print_word:23::print_byte:33::print_char:38 [ print_byte::b#2 char_cursor#27 ] main:2::mul_tables_compare:9::print_word:19::print_byte:31::print_char:41 [ mul_tables_compare::kc_sqr#2 print_word::w#2 char_cursor#27 ] main:2::mul_tables_compare:9::print_word:23::print_byte:31::print_char:41 [ print_word::w#2 char_cursor#27 ] main:2::mul_tables_compare:9::print_word:19::print_byte:33::print_char:41 [ mul_tables_compare::kc_sqr#2 char_cursor#27 ] main:2::mul_tables_compare:9::print_word:23::print_byte:33::print_char:41 [ char_cursor#27 ] ) -- _deref_pbuz1=vbuaa - ldy #0 - sta (char_cursor),y - //SEG98 [45] (byte*) char_cursor#10 ← ++ (byte*) char_cursor#27 [ char_cursor#10 ] ( main:2::mul_tables_compare:9::print_word:19::print_byte:31::print_char:38 [ mul_tables_compare::kc_sqr#2 print_word::w#2 print_byte::b#2 char_cursor#10 ] main:2::mul_tables_compare:9::print_word:23::print_byte:31::print_char:38 [ print_word::w#2 print_byte::b#2 char_cursor#10 ] main:2::mul_tables_compare:9::print_word:19::print_byte:33::print_char:38 [ mul_tables_compare::kc_sqr#2 print_byte::b#2 char_cursor#10 ] main:2::mul_tables_compare:9::print_word:23::print_byte:33::print_char:38 [ print_byte::b#2 char_cursor#10 ] main:2::mul_tables_compare:9::print_word:19::print_byte:31::print_char:41 [ mul_tables_compare::kc_sqr#2 print_word::w#2 char_cursor#10 ] main:2::mul_tables_compare:9::print_word:23::print_byte:31::print_char:41 [ print_word::w#2 char_cursor#10 ] main:2::mul_tables_compare:9::print_word:19::print_byte:33::print_char:41 [ mul_tables_compare::kc_sqr#2 char_cursor#10 ] main:2::mul_tables_compare:9::print_word:23::print_byte:33::print_char:41 [ char_cursor#10 ] ) -- pbuz1=_inc_pbuz1 - inc char_cursor - bne !+ - inc char_cursor+1 - !: - jmp breturn - //SEG99 print_char::@return - breturn: - //SEG100 [46] return [ char_cursor#10 ] ( main:2::mul_tables_compare:9::print_word:19::print_byte:31::print_char:38 [ mul_tables_compare::kc_sqr#2 print_word::w#2 print_byte::b#2 char_cursor#10 ] main:2::mul_tables_compare:9::print_word:23::print_byte:31::print_char:38 [ print_word::w#2 print_byte::b#2 char_cursor#10 ] main:2::mul_tables_compare:9::print_word:19::print_byte:33::print_char:38 [ mul_tables_compare::kc_sqr#2 print_byte::b#2 char_cursor#10 ] main:2::mul_tables_compare:9::print_word:23::print_byte:33::print_char:38 [ print_byte::b#2 char_cursor#10 ] main:2::mul_tables_compare:9::print_word:19::print_byte:31::print_char:41 [ mul_tables_compare::kc_sqr#2 print_word::w#2 char_cursor#10 ] main:2::mul_tables_compare:9::print_word:23::print_byte:31::print_char:41 [ print_word::w#2 char_cursor#10 ] main:2::mul_tables_compare:9::print_word:19::print_byte:33::print_char:41 [ mul_tables_compare::kc_sqr#2 char_cursor#10 ] main:2::mul_tables_compare:9::print_word:23::print_byte:33::print_char:41 [ char_cursor#10 ] ) - rts -} -//SEG101 print_str -print_str: { - .label str = 8 - //SEG102 [48] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] - b1_from_print_str: - b1_from_b2: - //SEG103 [48] phi (byte*) char_cursor#19 = (byte*) char_cursor#44 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy - //SEG104 [48] phi (byte*) print_str::str#3 = (byte*) print_str::str#5 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy - jmp b1 - //SEG105 print_str::@1 - b1: - //SEG106 [49] if(*((byte*) print_str::str#3)!=(byte) '@') goto print_str::@2 [ char_cursor#19 print_str::str#3 ] ( main:2::mul_tables_compare:9::print_str:17 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 char_cursor#19 print_str::str#3 ] main:2::mul_tables_compare:9::print_str:21 [ mul_tables_compare::kc_sqr#2 char_cursor#19 print_str::str#3 ] ) -- _deref_pbuz1_neq_vbuc1_then_la1 - ldy #0 - lda (str),y - cmp #'@' - bne b2 - jmp breturn - //SEG107 print_str::@return - breturn: - //SEG108 [50] return [ char_cursor#19 ] ( main:2::mul_tables_compare:9::print_str:17 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 char_cursor#19 ] main:2::mul_tables_compare:9::print_str:21 [ mul_tables_compare::kc_sqr#2 char_cursor#19 ] ) - rts - //SEG109 print_str::@2 - b2: - //SEG110 [51] *((byte*) char_cursor#19) ← *((byte*) print_str::str#3) [ char_cursor#19 print_str::str#3 ] ( main:2::mul_tables_compare:9::print_str:17 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 char_cursor#19 print_str::str#3 ] main:2::mul_tables_compare:9::print_str:21 [ mul_tables_compare::kc_sqr#2 char_cursor#19 print_str::str#3 ] ) -- _deref_pbuz1=_deref_pbuz2 - ldy #0 - lda (str),y - ldy #0 - sta (char_cursor),y - //SEG111 [52] (byte*) char_cursor#1 ← ++ (byte*) char_cursor#19 [ print_str::str#3 char_cursor#1 ] ( main:2::mul_tables_compare:9::print_str:17 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 print_str::str#3 char_cursor#1 ] main:2::mul_tables_compare:9::print_str:21 [ mul_tables_compare::kc_sqr#2 print_str::str#3 char_cursor#1 ] ) -- pbuz1=_inc_pbuz1 - inc char_cursor - bne !+ - inc char_cursor+1 - !: - //SEG112 [53] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#3 [ print_str::str#0 char_cursor#1 ] ( main:2::mul_tables_compare:9::print_str:17 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 print_str::str#0 char_cursor#1 ] main:2::mul_tables_compare:9::print_str:21 [ mul_tables_compare::kc_sqr#2 print_str::str#0 char_cursor#1 ] ) -- pbuz1=_inc_pbuz1 - inc str - bne !+ - inc str+1 - !: - jmp b1_from_b2 -} -//SEG113 print_cls -print_cls: { - .label sc = 6 - //SEG114 [55] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] - b1_from_print_cls: - //SEG115 [55] phi (byte*) print_cls::sc#2 = ((byte*))(word/signed word) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG224 [53] phi (byte*) print_str::str#9 = (const string) mul_tables_compare::str2 [phi:mul_tables_compare::@5->print_str#1] -- pbuz1=pbuc1 + lda #str2 + sta print_str.str+1 + jsr print_str + //SEG225 [108] phi from mul_tables_compare::@5 to mul_tables_compare::@10 [phi:mul_tables_compare::@5->mul_tables_compare::@10] + b10_from_b5: + jmp b10 + //SEG226 mul_tables_compare::@10 + b10: + //SEG227 [109] call print_ln param-assignment [ line_cursor#1 ] ( main:2::mul_tables_compare:11 [ line_cursor#1 ] ) + //SEG228 [48] phi from mul_tables_compare::@10 to print_ln [phi:mul_tables_compare::@10->print_ln] + print_ln_from_b10: + //SEG229 [48] phi (byte*) line_cursor#22 = ((byte*))(word/signed word) 1024 [phi:mul_tables_compare::@10->print_ln#0] -- pbuz1=pbuc1 lda #<$400 - sta sc + sta line_cursor lda #>$400 - sta sc+1 - jmp b1 - //SEG116 [55] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] - b1_from_b1: - //SEG117 [55] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy - jmp b1 - //SEG118 print_cls::@1 - b1: - //SEG119 [56] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::mul_tables_compare:9::print_cls:15 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 print_cls::sc#2 ] ) -- _deref_pbuz1=vbuc1 - ldy #0 - lda #' ' - sta (sc),y - //SEG120 [57] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 [ print_cls::sc#1 ] ( main:2::mul_tables_compare:9::print_cls:15 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 print_cls::sc#1 ] ) -- pbuz1=_inc_pbuz1 - inc sc - bne !+ - inc sc+1 - !: - //SEG121 [58] if((byte*) print_cls::sc#1!=(word/signed word) 1024+(word/signed word) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::mul_tables_compare:9::print_cls:15 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 print_cls::sc#1 ] ) -- pbuz1_neq_vwuc1_then_la1 - lda sc+1 - cmp #>$400+$3e8 - bne b1_from_b1 - lda sc - cmp #<$400+$3e8 - bne b1_from_b1 + sta line_cursor+1 + jsr print_ln + //SEG230 [110] (byte*~) char_cursor#100 ← (byte*) line_cursor#1 [ line_cursor#1 char_cursor#100 ] ( main:2::mul_tables_compare:11 [ line_cursor#1 char_cursor#100 ] ) -- pbuz1=pbuz2 + lda line_cursor + sta char_cursor + lda line_cursor+1 + sta char_cursor+1 + //SEG231 [101] phi from mul_tables_compare::@10 to mul_tables_compare::@return [phi:mul_tables_compare::@10->mul_tables_compare::@return] + breturn_from_b10: + //SEG232 [101] phi (byte*) line_cursor#17 = (byte*) line_cursor#1 [phi:mul_tables_compare::@10->mul_tables_compare::@return#0] -- register_copy + //SEG233 [101] phi (byte*) char_cursor#20 = (byte*~) char_cursor#100 [phi:mul_tables_compare::@10->mul_tables_compare::@return#1] -- register_copy jmp breturn - //SEG122 print_cls::@return - breturn: - //SEG123 [59] return [ ] ( main:2::mul_tables_compare:9::print_cls:15 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 ] ) - rts + str: .text "multiply table mismatch at @" + str1: .text " / @" + str2: .text "multiply tables match!@" } -//SEG124 init_mul_tables_asm +//SEG234 init_mul_tables_asm init_mul_tables_asm: { .const mem = $ff - //SEG125 asm { ldx#$00txa.byte$c9lb1:tyaadc#$00ml1:staasm_mul_sqr1_hi,xtaycmp#$40txarorml9:adc#$00staml9+1inxml0:staasm_mul_sqr1_lo,xbnelb1incml0+2incml1+2clcinybnelb1ldx#$00ldy#$ff!:ldaasm_mul_sqr1_hi+1,xstaasm_mul_sqr2_hi+$100,xldaasm_mul_sqr1_hi,xstaasm_mul_sqr2_hi,yldaasm_mul_sqr1_lo+1,xstaasm_mul_sqr2_lo+$100,xldaasm_mul_sqr1_lo,xstaasm_mul_sqr2_lo,ydeyinxbne!- } + //SEG235 asm { ldx#$00txa.byte$c9lb1:tyaadc#$00ml1:staasm_mul_sqr1_hi,xtaycmp#$40txarorml9:adc#$00staml9+1inxml0:staasm_mul_sqr1_lo,xbnelb1incml0+2incml1+2clcinybnelb1ldx#$00ldy#$ff!:ldaasm_mul_sqr1_hi+1,xstaasm_mul_sqr2_hi+$100,xldaasm_mul_sqr1_hi,xstaasm_mul_sqr2_hi,yldaasm_mul_sqr1_lo+1,xstaasm_mul_sqr2_lo+$100,xldaasm_mul_sqr1_lo,xstaasm_mul_sqr2_lo,ydeyinxbne!- } ldx #0 txa .byte $c9 @@ -3408,108 +5596,108 @@ init_mul_tables_asm: { dey inx bne !- - //SEG126 [61] *((const byte*) init_mul_tables_asm::mem#0) ← *((const byte[512]) asm_mul_sqr1_lo#0) [ ] ( main:2::init_mul_tables_asm:7 [ ] ) -- _deref_pbuc1=_deref_pbuc2 + //SEG236 [112] *((const byte*) init_mul_tables_asm::mem#0) ← *((const byte[512]) asm_mul_sqr1_lo#0) [ ] ( main:2::init_mul_tables_asm:9 [ ] ) -- _deref_pbuc1=_deref_pbuc2 lda asm_mul_sqr1_lo sta mem - //SEG127 [62] *((const byte*) init_mul_tables_asm::mem#0) ← *((const byte[512]) asm_mul_sqr1_hi#0) [ ] ( main:2::init_mul_tables_asm:7 [ ] ) -- _deref_pbuc1=_deref_pbuc2 + //SEG237 [113] *((const byte*) init_mul_tables_asm::mem#0) ← *((const byte[512]) asm_mul_sqr1_hi#0) [ ] ( main:2::init_mul_tables_asm:9 [ ] ) -- _deref_pbuc1=_deref_pbuc2 lda asm_mul_sqr1_hi sta mem - //SEG128 [63] *((const byte*) init_mul_tables_asm::mem#0) ← *((const byte[512]) asm_mul_sqr2_lo#0) [ ] ( main:2::init_mul_tables_asm:7 [ ] ) -- _deref_pbuc1=_deref_pbuc2 + //SEG238 [114] *((const byte*) init_mul_tables_asm::mem#0) ← *((const byte[512]) asm_mul_sqr2_lo#0) [ ] ( main:2::init_mul_tables_asm:9 [ ] ) -- _deref_pbuc1=_deref_pbuc2 lda asm_mul_sqr2_lo sta mem - //SEG129 [64] *((const byte*) init_mul_tables_asm::mem#0) ← *((const byte[512]) asm_mul_sqr2_hi#0) [ ] ( main:2::init_mul_tables_asm:7 [ ] ) -- _deref_pbuc1=_deref_pbuc2 + //SEG239 [115] *((const byte*) init_mul_tables_asm::mem#0) ← *((const byte[512]) asm_mul_sqr2_hi#0) [ ] ( main:2::init_mul_tables_asm:9 [ ] ) -- _deref_pbuc1=_deref_pbuc2 lda asm_mul_sqr2_hi sta mem jmp breturn - //SEG130 init_mul_tables_asm::@return + //SEG240 init_mul_tables_asm::@return breturn: - //SEG131 [65] return [ ] ( main:2::init_mul_tables_asm:7 [ ] ) + //SEG241 [116] return [ ] ( main:2::init_mul_tables_asm:9 [ ] ) rts } -//SEG132 init_mul_tables +//SEG242 init_mul_tables init_mul_tables: { - .label sqr1_hi = 4 - .label sqr = 6 - .label sqr1_lo = 2 - .label x_2 = $a - .label sqr2_hi = 4 - .label sqr2_lo = 2 - .label dir = $a - //SEG133 [67] phi from init_mul_tables to init_mul_tables::@1 [phi:init_mul_tables->init_mul_tables::@1] + .label sqr1_hi = 6 + .label sqr = 8 + .label sqr1_lo = 4 + .label x_2 = 2 + .label sqr2_hi = 6 + .label sqr2_lo = 4 + .label dir = 2 + //SEG243 [118] phi from init_mul_tables to init_mul_tables::@1 [phi:init_mul_tables->init_mul_tables::@1] b1_from_init_mul_tables: - //SEG134 [67] phi (byte) init_mul_tables::x_2#3 = (byte/signed byte/word/signed word) 0 [phi:init_mul_tables->init_mul_tables::@1#0] -- vbuz1=vbuc1 + //SEG244 [118] phi (byte) init_mul_tables::x_2#3 = (byte/signed byte/word/signed word) 0 [phi:init_mul_tables->init_mul_tables::@1#0] -- vbuz1=vbuc1 lda #0 sta x_2 - //SEG135 [67] phi (byte*) init_mul_tables::sqr1_hi#2 = (const byte[512]) mul_sqr1_hi#0+(byte/signed byte/word/signed word) 1 [phi:init_mul_tables->init_mul_tables::@1#1] -- pbuz1=pbuc1 + //SEG245 [118] phi (byte*) init_mul_tables::sqr1_hi#2 = (const byte[512]) mul_sqr1_hi#0+(byte/signed byte/word/signed word) 1 [phi:init_mul_tables->init_mul_tables::@1#1] -- pbuz1=pbuc1 lda #mul_sqr1_hi+1 sta sqr1_hi+1 - //SEG136 [67] phi (byte*) init_mul_tables::sqr1_lo#2 = (const byte[512]) mul_sqr1_lo#0+(byte/signed byte/word/signed word) 1 [phi:init_mul_tables->init_mul_tables::@1#2] -- pbuz1=pbuc1 + //SEG246 [118] phi (byte*) init_mul_tables::sqr1_lo#2 = (const byte[512]) mul_sqr1_lo#0+(byte/signed byte/word/signed word) 1 [phi:init_mul_tables->init_mul_tables::@1#2] -- pbuz1=pbuc1 lda #mul_sqr1_lo+1 sta sqr1_lo+1 - //SEG137 [67] phi (word) init_mul_tables::sqr#4 = (byte/signed byte/word/signed word) 0 [phi:init_mul_tables->init_mul_tables::@1#3] -- vwuz1=vbuc1 + //SEG247 [118] phi (word) init_mul_tables::sqr#4 = (byte/signed byte/word/signed word) 0 [phi:init_mul_tables->init_mul_tables::@1#3] -- vwuz1=vbuc1 lda #0 sta sqr lda #0 sta sqr+1 - //SEG138 [67] phi (byte) init_mul_tables::c#2 = (byte/signed byte/word/signed word) 0 [phi:init_mul_tables->init_mul_tables::@1#4] -- vbuxx=vbuc1 + //SEG248 [118] phi (byte) init_mul_tables::c#2 = (byte/signed byte/word/signed word) 0 [phi:init_mul_tables->init_mul_tables::@1#4] -- vbuxx=vbuc1 ldx #0 jmp b1 - //SEG139 [67] phi from init_mul_tables::@2 to init_mul_tables::@1 [phi:init_mul_tables::@2->init_mul_tables::@1] + //SEG249 [118] phi from init_mul_tables::@2 to init_mul_tables::@1 [phi:init_mul_tables::@2->init_mul_tables::@1] b1_from_b2: - //SEG140 [67] phi (byte) init_mul_tables::x_2#3 = (byte) init_mul_tables::x_2#2 [phi:init_mul_tables::@2->init_mul_tables::@1#0] -- register_copy - //SEG141 [67] phi (byte*) init_mul_tables::sqr1_hi#2 = (byte*) init_mul_tables::sqr1_hi#1 [phi:init_mul_tables::@2->init_mul_tables::@1#1] -- register_copy - //SEG142 [67] phi (byte*) init_mul_tables::sqr1_lo#2 = (byte*) init_mul_tables::sqr1_lo#1 [phi:init_mul_tables::@2->init_mul_tables::@1#2] -- register_copy - //SEG143 [67] phi (word) init_mul_tables::sqr#4 = (word) init_mul_tables::sqr#1 [phi:init_mul_tables::@2->init_mul_tables::@1#3] -- register_copy - //SEG144 [67] phi (byte) init_mul_tables::c#2 = (byte) init_mul_tables::c#1 [phi:init_mul_tables::@2->init_mul_tables::@1#4] -- register_copy + //SEG250 [118] phi (byte) init_mul_tables::x_2#3 = (byte) init_mul_tables::x_2#2 [phi:init_mul_tables::@2->init_mul_tables::@1#0] -- register_copy + //SEG251 [118] phi (byte*) init_mul_tables::sqr1_hi#2 = (byte*) init_mul_tables::sqr1_hi#1 [phi:init_mul_tables::@2->init_mul_tables::@1#1] -- register_copy + //SEG252 [118] phi (byte*) init_mul_tables::sqr1_lo#2 = (byte*) init_mul_tables::sqr1_lo#1 [phi:init_mul_tables::@2->init_mul_tables::@1#2] -- register_copy + //SEG253 [118] phi (word) init_mul_tables::sqr#4 = (word) init_mul_tables::sqr#1 [phi:init_mul_tables::@2->init_mul_tables::@1#3] -- register_copy + //SEG254 [118] phi (byte) init_mul_tables::c#2 = (byte) init_mul_tables::c#1 [phi:init_mul_tables::@2->init_mul_tables::@1#4] -- register_copy jmp b1 - //SEG145 init_mul_tables::@1 + //SEG255 init_mul_tables::@1 b1: - //SEG146 [68] (byte) init_mul_tables::c#1 ← ++ (byte) init_mul_tables::c#2 [ init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::x_2#3 init_mul_tables::c#1 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::x_2#3 init_mul_tables::c#1 ] ) -- vbuxx=_inc_vbuxx + //SEG256 [119] (byte) init_mul_tables::c#1 ← ++ (byte) init_mul_tables::c#2 [ init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::x_2#3 init_mul_tables::c#1 ] ( main:2::init_mul_tables:7 [ init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::x_2#3 init_mul_tables::c#1 ] ) -- vbuxx=_inc_vbuxx inx - //SEG147 [69] (byte~) init_mul_tables::$2 ← (byte) init_mul_tables::c#1 & (byte/signed byte/word/signed word) 1 [ init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::x_2#3 init_mul_tables::c#1 init_mul_tables::$2 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::x_2#3 init_mul_tables::c#1 init_mul_tables::$2 ] ) -- vbuaa=vbuxx_band_vbuc1 + //SEG257 [120] (byte~) init_mul_tables::$2 ← (byte) init_mul_tables::c#1 & (byte/signed byte/word/signed word) 1 [ init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::x_2#3 init_mul_tables::c#1 init_mul_tables::$2 ] ( main:2::init_mul_tables:7 [ init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::x_2#3 init_mul_tables::c#1 init_mul_tables::$2 ] ) -- vbuaa=vbuxx_band_vbuc1 txa and #1 - //SEG148 [70] if((byte~) init_mul_tables::$2!=(byte/signed byte/word/signed word) 0) goto init_mul_tables::@2 [ init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::x_2#3 init_mul_tables::c#1 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::x_2#3 init_mul_tables::c#1 ] ) -- vbuaa_neq_0_then_la1 + //SEG258 [121] if((byte~) init_mul_tables::$2!=(byte/signed byte/word/signed word) 0) goto init_mul_tables::@2 [ init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::x_2#3 init_mul_tables::c#1 ] ( main:2::init_mul_tables:7 [ init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::x_2#3 init_mul_tables::c#1 ] ) -- vbuaa_neq_0_then_la1 cmp #0 bne b2_from_b1 jmp b5 - //SEG149 init_mul_tables::@5 + //SEG259 init_mul_tables::@5 b5: - //SEG150 [71] (byte) init_mul_tables::x_2#1 ← ++ (byte) init_mul_tables::x_2#3 [ init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#1 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#1 ] ) -- vbuz1=_inc_vbuz1 + //SEG260 [122] (byte) init_mul_tables::x_2#1 ← ++ (byte) init_mul_tables::x_2#3 [ init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#1 ] ( main:2::init_mul_tables:7 [ init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#1 ] ) -- vbuz1=_inc_vbuz1 inc x_2 - //SEG151 [72] (word) init_mul_tables::sqr#2 ← ++ (word) init_mul_tables::sqr#4 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#1 init_mul_tables::sqr#2 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#1 init_mul_tables::sqr#2 ] ) -- vwuz1=_inc_vwuz1 + //SEG261 [123] (word) init_mul_tables::sqr#2 ← ++ (word) init_mul_tables::sqr#4 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#1 init_mul_tables::sqr#2 ] ( main:2::init_mul_tables:7 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#1 init_mul_tables::sqr#2 ] ) -- vwuz1=_inc_vwuz1 inc sqr bne !+ inc sqr+1 !: - //SEG152 [73] phi from init_mul_tables::@1 init_mul_tables::@5 to init_mul_tables::@2 [phi:init_mul_tables::@1/init_mul_tables::@5->init_mul_tables::@2] + //SEG262 [124] phi from init_mul_tables::@1 init_mul_tables::@5 to init_mul_tables::@2 [phi:init_mul_tables::@1/init_mul_tables::@5->init_mul_tables::@2] b2_from_b1: b2_from_b5: - //SEG153 [73] phi (byte) init_mul_tables::x_2#2 = (byte) init_mul_tables::x_2#3 [phi:init_mul_tables::@1/init_mul_tables::@5->init_mul_tables::@2#0] -- register_copy - //SEG154 [73] phi (word) init_mul_tables::sqr#3 = (word) init_mul_tables::sqr#4 [phi:init_mul_tables::@1/init_mul_tables::@5->init_mul_tables::@2#1] -- register_copy + //SEG263 [124] phi (byte) init_mul_tables::x_2#2 = (byte) init_mul_tables::x_2#3 [phi:init_mul_tables::@1/init_mul_tables::@5->init_mul_tables::@2#0] -- register_copy + //SEG264 [124] phi (word) init_mul_tables::sqr#3 = (word) init_mul_tables::sqr#4 [phi:init_mul_tables::@1/init_mul_tables::@5->init_mul_tables::@2#1] -- register_copy jmp b2 - //SEG155 init_mul_tables::@2 + //SEG265 init_mul_tables::@2 b2: - //SEG156 [74] (byte~) init_mul_tables::$5 ← < (word) init_mul_tables::sqr#3 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 init_mul_tables::$5 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 init_mul_tables::$5 ] ) -- vbuaa=_lo_vwuz1 + //SEG266 [125] (byte~) init_mul_tables::$5 ← < (word) init_mul_tables::sqr#3 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 init_mul_tables::$5 ] ( main:2::init_mul_tables:7 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 init_mul_tables::$5 ] ) -- vbuaa=_lo_vwuz1 lda sqr - //SEG157 [75] *((byte*) init_mul_tables::sqr1_lo#2) ← (byte~) init_mul_tables::$5 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 ] ) -- _deref_pbuz1=vbuaa + //SEG267 [126] *((byte*) init_mul_tables::sqr1_lo#2) ← (byte~) init_mul_tables::$5 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 ] ( main:2::init_mul_tables:7 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 ] ) -- _deref_pbuz1=vbuaa ldy #0 sta (sqr1_lo),y - //SEG158 [76] (byte~) init_mul_tables::$6 ← > (word) init_mul_tables::sqr#3 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 init_mul_tables::$6 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 init_mul_tables::$6 ] ) -- vbuaa=_hi_vwuz1 + //SEG268 [127] (byte~) init_mul_tables::$6 ← > (word) init_mul_tables::sqr#3 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 init_mul_tables::$6 ] ( main:2::init_mul_tables:7 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 init_mul_tables::$6 ] ) -- vbuaa=_hi_vwuz1 lda sqr+1 - //SEG159 [77] *((byte*) init_mul_tables::sqr1_hi#2) ← (byte~) init_mul_tables::$6 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 ] ) -- _deref_pbuz1=vbuaa + //SEG269 [128] *((byte*) init_mul_tables::sqr1_hi#2) ← (byte~) init_mul_tables::$6 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 ] ( main:2::init_mul_tables:7 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 ] ) -- _deref_pbuz1=vbuaa ldy #0 sta (sqr1_hi),y - //SEG160 [78] (byte*) init_mul_tables::sqr1_hi#1 ← ++ (byte*) init_mul_tables::sqr1_hi#2 [ init_mul_tables::sqr1_lo#2 init_mul_tables::c#1 init_mul_tables::sqr1_hi#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr1_lo#2 init_mul_tables::c#1 init_mul_tables::sqr1_hi#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 ] ) -- pbuz1=_inc_pbuz1 + //SEG270 [129] (byte*) init_mul_tables::sqr1_hi#1 ← ++ (byte*) init_mul_tables::sqr1_hi#2 [ init_mul_tables::sqr1_lo#2 init_mul_tables::c#1 init_mul_tables::sqr1_hi#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 ] ( main:2::init_mul_tables:7 [ init_mul_tables::sqr1_lo#2 init_mul_tables::c#1 init_mul_tables::sqr1_hi#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 ] ) -- pbuz1=_inc_pbuz1 inc sqr1_hi bne !+ inc sqr1_hi+1 !: - //SEG161 [79] (word) init_mul_tables::sqr#1 ← (word) init_mul_tables::sqr#3 + (byte) init_mul_tables::x_2#2 [ init_mul_tables::sqr1_lo#2 init_mul_tables::c#1 init_mul_tables::sqr#1 init_mul_tables::sqr1_hi#1 init_mul_tables::x_2#2 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr1_lo#2 init_mul_tables::c#1 init_mul_tables::sqr#1 init_mul_tables::sqr1_hi#1 init_mul_tables::x_2#2 ] ) -- vwuz1=vwuz1_plus_vbuz2 + //SEG271 [130] (word) init_mul_tables::sqr#1 ← (word) init_mul_tables::sqr#3 + (byte) init_mul_tables::x_2#2 [ init_mul_tables::sqr1_lo#2 init_mul_tables::c#1 init_mul_tables::sqr#1 init_mul_tables::sqr1_hi#1 init_mul_tables::x_2#2 ] ( main:2::init_mul_tables:7 [ init_mul_tables::sqr1_lo#2 init_mul_tables::c#1 init_mul_tables::sqr#1 init_mul_tables::sqr1_hi#1 init_mul_tables::x_2#2 ] ) -- vwuz1=vwuz1_plus_vbuz2 lda x_2 clc adc sqr @@ -3517,80 +5705,80 @@ init_mul_tables: { bcc !+ inc sqr+1 !: - //SEG162 [80] (byte*) init_mul_tables::sqr1_lo#1 ← ++ (byte*) init_mul_tables::sqr1_lo#2 [ init_mul_tables::c#1 init_mul_tables::sqr#1 init_mul_tables::sqr1_lo#1 init_mul_tables::sqr1_hi#1 init_mul_tables::x_2#2 ] ( main:2::init_mul_tables:5 [ init_mul_tables::c#1 init_mul_tables::sqr#1 init_mul_tables::sqr1_lo#1 init_mul_tables::sqr1_hi#1 init_mul_tables::x_2#2 ] ) -- pbuz1=_inc_pbuz1 + //SEG272 [131] (byte*) init_mul_tables::sqr1_lo#1 ← ++ (byte*) init_mul_tables::sqr1_lo#2 [ init_mul_tables::c#1 init_mul_tables::sqr#1 init_mul_tables::sqr1_lo#1 init_mul_tables::sqr1_hi#1 init_mul_tables::x_2#2 ] ( main:2::init_mul_tables:7 [ init_mul_tables::c#1 init_mul_tables::sqr#1 init_mul_tables::sqr1_lo#1 init_mul_tables::sqr1_hi#1 init_mul_tables::x_2#2 ] ) -- pbuz1=_inc_pbuz1 inc sqr1_lo bne !+ inc sqr1_lo+1 !: - //SEG163 [81] if((byte*) init_mul_tables::sqr1_lo#1!=(const byte[512]) mul_sqr1_lo#0+(word/signed word) 512) goto init_mul_tables::@1 [ init_mul_tables::c#1 init_mul_tables::sqr#1 init_mul_tables::sqr1_lo#1 init_mul_tables::sqr1_hi#1 init_mul_tables::x_2#2 ] ( main:2::init_mul_tables:5 [ init_mul_tables::c#1 init_mul_tables::sqr#1 init_mul_tables::sqr1_lo#1 init_mul_tables::sqr1_hi#1 init_mul_tables::x_2#2 ] ) -- pbuz1_neq_pbuc1_then_la1 + //SEG273 [132] if((byte*) init_mul_tables::sqr1_lo#1!=(const byte[512]) mul_sqr1_lo#0+(word/signed word) 512) goto init_mul_tables::@1 [ init_mul_tables::c#1 init_mul_tables::sqr#1 init_mul_tables::sqr1_lo#1 init_mul_tables::sqr1_hi#1 init_mul_tables::x_2#2 ] ( main:2::init_mul_tables:7 [ init_mul_tables::c#1 init_mul_tables::sqr#1 init_mul_tables::sqr1_lo#1 init_mul_tables::sqr1_hi#1 init_mul_tables::x_2#2 ] ) -- pbuz1_neq_pbuc1_then_la1 lda sqr1_lo+1 cmp #>mul_sqr1_lo+$200 bne b1_from_b2 lda sqr1_lo cmp #init_mul_tables::@3] + //SEG274 [133] phi from init_mul_tables::@2 to init_mul_tables::@3 [phi:init_mul_tables::@2->init_mul_tables::@3] b3_from_b2: - //SEG165 [82] phi (byte) init_mul_tables::dir#2 = (byte/word/signed word) 255 [phi:init_mul_tables::@2->init_mul_tables::@3#0] -- vbuz1=vbuc1 + //SEG275 [133] phi (byte) init_mul_tables::dir#2 = (byte/word/signed word) 255 [phi:init_mul_tables::@2->init_mul_tables::@3#0] -- vbuz1=vbuc1 lda #$ff sta dir - //SEG166 [82] phi (byte*) init_mul_tables::sqr2_hi#2 = (const byte[512]) mul_sqr2_hi#0 [phi:init_mul_tables::@2->init_mul_tables::@3#1] -- pbuz1=pbuc1 + //SEG276 [133] phi (byte*) init_mul_tables::sqr2_hi#2 = (const byte[512]) mul_sqr2_hi#0 [phi:init_mul_tables::@2->init_mul_tables::@3#1] -- pbuz1=pbuc1 lda #mul_sqr2_hi sta sqr2_hi+1 - //SEG167 [82] phi (byte*) init_mul_tables::sqr2_lo#2 = (const byte[512]) mul_sqr2_lo#0 [phi:init_mul_tables::@2->init_mul_tables::@3#2] -- pbuz1=pbuc1 + //SEG277 [133] phi (byte*) init_mul_tables::sqr2_lo#2 = (const byte[512]) mul_sqr2_lo#0 [phi:init_mul_tables::@2->init_mul_tables::@3#2] -- pbuz1=pbuc1 lda #mul_sqr2_lo sta sqr2_lo+1 - //SEG168 [82] phi (byte) init_mul_tables::x_255#2 = ((byte))-(byte/signed byte/word/signed word) 1 [phi:init_mul_tables::@2->init_mul_tables::@3#3] -- vbuxx=vbuc1 + //SEG278 [133] phi (byte) init_mul_tables::x_255#2 = ((byte))-(byte/signed byte/word/signed word) 1 [phi:init_mul_tables::@2->init_mul_tables::@3#3] -- vbuxx=vbuc1 ldx #-1 jmp b3 - //SEG169 [82] phi from init_mul_tables::@4 to init_mul_tables::@3 [phi:init_mul_tables::@4->init_mul_tables::@3] + //SEG279 [133] phi from init_mul_tables::@4 to init_mul_tables::@3 [phi:init_mul_tables::@4->init_mul_tables::@3] b3_from_b4: - //SEG170 [82] phi (byte) init_mul_tables::dir#2 = (byte) init_mul_tables::dir#3 [phi:init_mul_tables::@4->init_mul_tables::@3#0] -- register_copy - //SEG171 [82] phi (byte*) init_mul_tables::sqr2_hi#2 = (byte*) init_mul_tables::sqr2_hi#1 [phi:init_mul_tables::@4->init_mul_tables::@3#1] -- register_copy - //SEG172 [82] phi (byte*) init_mul_tables::sqr2_lo#2 = (byte*) init_mul_tables::sqr2_lo#1 [phi:init_mul_tables::@4->init_mul_tables::@3#2] -- register_copy - //SEG173 [82] phi (byte) init_mul_tables::x_255#2 = (byte) init_mul_tables::x_255#1 [phi:init_mul_tables::@4->init_mul_tables::@3#3] -- register_copy + //SEG280 [133] phi (byte) init_mul_tables::dir#2 = (byte) init_mul_tables::dir#3 [phi:init_mul_tables::@4->init_mul_tables::@3#0] -- register_copy + //SEG281 [133] phi (byte*) init_mul_tables::sqr2_hi#2 = (byte*) init_mul_tables::sqr2_hi#1 [phi:init_mul_tables::@4->init_mul_tables::@3#1] -- register_copy + //SEG282 [133] phi (byte*) init_mul_tables::sqr2_lo#2 = (byte*) init_mul_tables::sqr2_lo#1 [phi:init_mul_tables::@4->init_mul_tables::@3#2] -- register_copy + //SEG283 [133] phi (byte) init_mul_tables::x_255#2 = (byte) init_mul_tables::x_255#1 [phi:init_mul_tables::@4->init_mul_tables::@3#3] -- register_copy jmp b3 - //SEG174 init_mul_tables::@3 + //SEG284 init_mul_tables::@3 b3: - //SEG175 [83] *((byte*) init_mul_tables::sqr2_lo#2) ← *((const byte[512]) mul_sqr1_lo#0 + (byte) init_mul_tables::x_255#2) [ init_mul_tables::x_255#2 init_mul_tables::sqr2_lo#2 init_mul_tables::sqr2_hi#2 init_mul_tables::dir#2 ] ( main:2::init_mul_tables:5 [ init_mul_tables::x_255#2 init_mul_tables::sqr2_lo#2 init_mul_tables::sqr2_hi#2 init_mul_tables::dir#2 ] ) -- _deref_pbuz1=pbuc1_derefidx_vbuxx + //SEG285 [134] *((byte*) init_mul_tables::sqr2_lo#2) ← *((const byte[512]) mul_sqr1_lo#0 + (byte) init_mul_tables::x_255#2) [ init_mul_tables::x_255#2 init_mul_tables::sqr2_lo#2 init_mul_tables::sqr2_hi#2 init_mul_tables::dir#2 ] ( main:2::init_mul_tables:7 [ init_mul_tables::x_255#2 init_mul_tables::sqr2_lo#2 init_mul_tables::sqr2_hi#2 init_mul_tables::dir#2 ] ) -- _deref_pbuz1=pbuc1_derefidx_vbuxx lda mul_sqr1_lo,x ldy #0 sta (sqr2_lo),y - //SEG176 [84] *((byte*) init_mul_tables::sqr2_hi#2) ← *((const byte[512]) mul_sqr1_hi#0 + (byte) init_mul_tables::x_255#2) [ init_mul_tables::x_255#2 init_mul_tables::sqr2_lo#2 init_mul_tables::sqr2_hi#2 init_mul_tables::dir#2 ] ( main:2::init_mul_tables:5 [ init_mul_tables::x_255#2 init_mul_tables::sqr2_lo#2 init_mul_tables::sqr2_hi#2 init_mul_tables::dir#2 ] ) -- _deref_pbuz1=pbuc1_derefidx_vbuxx + //SEG286 [135] *((byte*) init_mul_tables::sqr2_hi#2) ← *((const byte[512]) mul_sqr1_hi#0 + (byte) init_mul_tables::x_255#2) [ init_mul_tables::x_255#2 init_mul_tables::sqr2_lo#2 init_mul_tables::sqr2_hi#2 init_mul_tables::dir#2 ] ( main:2::init_mul_tables:7 [ init_mul_tables::x_255#2 init_mul_tables::sqr2_lo#2 init_mul_tables::sqr2_hi#2 init_mul_tables::dir#2 ] ) -- _deref_pbuz1=pbuc1_derefidx_vbuxx lda mul_sqr1_hi,x ldy #0 sta (sqr2_hi),y - //SEG177 [85] (byte*) init_mul_tables::sqr2_hi#1 ← ++ (byte*) init_mul_tables::sqr2_hi#2 [ init_mul_tables::x_255#2 init_mul_tables::sqr2_lo#2 init_mul_tables::dir#2 init_mul_tables::sqr2_hi#1 ] ( main:2::init_mul_tables:5 [ init_mul_tables::x_255#2 init_mul_tables::sqr2_lo#2 init_mul_tables::dir#2 init_mul_tables::sqr2_hi#1 ] ) -- pbuz1=_inc_pbuz1 + //SEG287 [136] (byte*) init_mul_tables::sqr2_hi#1 ← ++ (byte*) init_mul_tables::sqr2_hi#2 [ init_mul_tables::x_255#2 init_mul_tables::sqr2_lo#2 init_mul_tables::dir#2 init_mul_tables::sqr2_hi#1 ] ( main:2::init_mul_tables:7 [ init_mul_tables::x_255#2 init_mul_tables::sqr2_lo#2 init_mul_tables::dir#2 init_mul_tables::sqr2_hi#1 ] ) -- pbuz1=_inc_pbuz1 inc sqr2_hi bne !+ inc sqr2_hi+1 !: - //SEG178 [86] (byte) init_mul_tables::x_255#1 ← (byte) init_mul_tables::x_255#2 + (byte) init_mul_tables::dir#2 [ init_mul_tables::sqr2_lo#2 init_mul_tables::dir#2 init_mul_tables::x_255#1 init_mul_tables::sqr2_hi#1 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr2_lo#2 init_mul_tables::dir#2 init_mul_tables::x_255#1 init_mul_tables::sqr2_hi#1 ] ) -- vbuxx=vbuxx_plus_vbuz1 + //SEG288 [137] (byte) init_mul_tables::x_255#1 ← (byte) init_mul_tables::x_255#2 + (byte) init_mul_tables::dir#2 [ init_mul_tables::sqr2_lo#2 init_mul_tables::dir#2 init_mul_tables::x_255#1 init_mul_tables::sqr2_hi#1 ] ( main:2::init_mul_tables:7 [ init_mul_tables::sqr2_lo#2 init_mul_tables::dir#2 init_mul_tables::x_255#1 init_mul_tables::sqr2_hi#1 ] ) -- vbuxx=vbuxx_plus_vbuz1 txa clc adc dir tax - //SEG179 [87] if((byte) init_mul_tables::x_255#1!=(byte/signed byte/word/signed word) 0) goto init_mul_tables::@12 [ init_mul_tables::sqr2_lo#2 init_mul_tables::dir#2 init_mul_tables::x_255#1 init_mul_tables::sqr2_hi#1 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr2_lo#2 init_mul_tables::dir#2 init_mul_tables::x_255#1 init_mul_tables::sqr2_hi#1 ] ) -- vbuxx_neq_0_then_la1 + //SEG289 [138] if((byte) init_mul_tables::x_255#1!=(byte/signed byte/word/signed word) 0) goto init_mul_tables::@12 [ init_mul_tables::sqr2_lo#2 init_mul_tables::dir#2 init_mul_tables::x_255#1 init_mul_tables::sqr2_hi#1 ] ( main:2::init_mul_tables:7 [ init_mul_tables::sqr2_lo#2 init_mul_tables::dir#2 init_mul_tables::x_255#1 init_mul_tables::sqr2_hi#1 ] ) -- vbuxx_neq_0_then_la1 cpx #0 bne b12_from_b3 - //SEG180 [88] phi from init_mul_tables::@3 to init_mul_tables::@4 [phi:init_mul_tables::@3->init_mul_tables::@4] + //SEG290 [139] phi from init_mul_tables::@3 to init_mul_tables::@4 [phi:init_mul_tables::@3->init_mul_tables::@4] b4_from_b3: - //SEG181 [88] phi (byte) init_mul_tables::dir#3 = (byte/signed byte/word/signed word) 1 [phi:init_mul_tables::@3->init_mul_tables::@4#0] -- vbuz1=vbuc1 + //SEG291 [139] phi (byte) init_mul_tables::dir#3 = (byte/signed byte/word/signed word) 1 [phi:init_mul_tables::@3->init_mul_tables::@4#0] -- vbuz1=vbuc1 lda #1 sta dir jmp b4 - //SEG182 init_mul_tables::@4 + //SEG292 init_mul_tables::@4 b4: - //SEG183 [89] (byte*) init_mul_tables::sqr2_lo#1 ← ++ (byte*) init_mul_tables::sqr2_lo#2 [ init_mul_tables::x_255#1 init_mul_tables::sqr2_lo#1 init_mul_tables::sqr2_hi#1 init_mul_tables::dir#3 ] ( main:2::init_mul_tables:5 [ init_mul_tables::x_255#1 init_mul_tables::sqr2_lo#1 init_mul_tables::sqr2_hi#1 init_mul_tables::dir#3 ] ) -- pbuz1=_inc_pbuz1 + //SEG293 [140] (byte*) init_mul_tables::sqr2_lo#1 ← ++ (byte*) init_mul_tables::sqr2_lo#2 [ init_mul_tables::x_255#1 init_mul_tables::sqr2_lo#1 init_mul_tables::sqr2_hi#1 init_mul_tables::dir#3 ] ( main:2::init_mul_tables:7 [ init_mul_tables::x_255#1 init_mul_tables::sqr2_lo#1 init_mul_tables::sqr2_hi#1 init_mul_tables::dir#3 ] ) -- pbuz1=_inc_pbuz1 inc sqr2_lo bne !+ inc sqr2_lo+1 !: - //SEG184 [90] if((byte*) init_mul_tables::sqr2_lo#1!=(const byte[512]) mul_sqr2_lo#0+(word/signed word) 511) goto init_mul_tables::@3 [ init_mul_tables::x_255#1 init_mul_tables::sqr2_lo#1 init_mul_tables::sqr2_hi#1 init_mul_tables::dir#3 ] ( main:2::init_mul_tables:5 [ init_mul_tables::x_255#1 init_mul_tables::sqr2_lo#1 init_mul_tables::sqr2_hi#1 init_mul_tables::dir#3 ] ) -- pbuz1_neq_pbuc1_then_la1 + //SEG294 [141] if((byte*) init_mul_tables::sqr2_lo#1!=(const byte[512]) mul_sqr2_lo#0+(word/signed word) 511) goto init_mul_tables::@3 [ init_mul_tables::x_255#1 init_mul_tables::sqr2_lo#1 init_mul_tables::sqr2_hi#1 init_mul_tables::dir#3 ] ( main:2::init_mul_tables:7 [ init_mul_tables::x_255#1 init_mul_tables::sqr2_lo#1 init_mul_tables::sqr2_hi#1 init_mul_tables::dir#3 ] ) -- pbuz1_neq_pbuc1_then_la1 lda sqr2_lo+1 cmp #>mul_sqr2_lo+$1ff bne b3_from_b4 @@ -3598,28 +5786,67 @@ init_mul_tables: { cmp #init_mul_tables::@12] + //SEG300 [145] phi from init_mul_tables::@3 to init_mul_tables::@12 [phi:init_mul_tables::@3->init_mul_tables::@12] b12_from_b3: jmp b12 - //SEG191 init_mul_tables::@12 + //SEG301 init_mul_tables::@12 b12: - //SEG192 [88] phi from init_mul_tables::@12 to init_mul_tables::@4 [phi:init_mul_tables::@12->init_mul_tables::@4] + //SEG302 [139] phi from init_mul_tables::@12 to init_mul_tables::@4 [phi:init_mul_tables::@12->init_mul_tables::@4] b4_from_b12: - //SEG193 [88] phi (byte) init_mul_tables::dir#3 = (byte) init_mul_tables::dir#2 [phi:init_mul_tables::@12->init_mul_tables::@4#0] -- register_copy + //SEG303 [139] phi (byte) init_mul_tables::dir#3 = (byte) init_mul_tables::dir#2 [phi:init_mul_tables::@12->init_mul_tables::@4#0] -- register_copy jmp b4 +} +//SEG304 print_cls +print_cls: { + .label sc = 4 + //SEG305 [147] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + b1_from_print_cls: + //SEG306 [147] phi (byte*) print_cls::sc#2 = ((byte*))(word/signed word) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + lda #<$400 + sta sc + lda #>$400 + sta sc+1 + jmp b1 + //SEG307 [147] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + b1_from_b1: + //SEG308 [147] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + jmp b1 + //SEG309 print_cls::@1 + b1: + //SEG310 [148] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] ) -- _deref_pbuz1=vbuc1 + ldy #0 + lda #' ' + sta (sc),y + //SEG311 [149] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) -- pbuz1=_inc_pbuz1 + inc sc + bne !+ + inc sc+1 + !: + //SEG312 [150] if((byte*) print_cls::sc#1!=(word/signed word) 1024+(word/signed word) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) -- pbuz1_neq_vwuc1_then_la1 + lda sc+1 + cmp #>$400+$3e8 + bne b1_from_b1 + lda sc + cmp #<$400+$3e8 + bne b1_from_b1 + jmp breturn + //SEG313 print_cls::@return + breturn: + //SEG314 [151] return [ ] ( main:2::print_cls:5 [ ] ) + rts } .align $100 mul_sqr1_lo: .fill $200, 0 @@ -3639,27 +5866,46 @@ init_mul_tables: { asm_mul_sqr2_hi: .fill $200, 0 ASSEMBLER OPTIMIZATIONS -Removing instruction jmp b10 +Removing instruction jmp b13 Removing instruction jmp bend Removing instruction jmp b1 Removing instruction jmp b2 +Removing instruction jmp b3 +Removing instruction jmp b4 +Removing instruction jmp breturn +Removing instruction jmp b1 +Removing instruction jmp b2 +Removing instruction jmp b8 +Removing instruction jmp b9 +Removing instruction jmp b4 +Removing instruction jmp b10 +Removing instruction jmp b11 +Removing instruction jmp b12 +Removing instruction jmp breturn +Removing instruction jmp b6 +Removing instruction jmp b7 +Removing instruction jmp b14 +Removing instruction jmp b1 +Removing instruction jmp breturn +Removing instruction jmp b1 +Removing instruction jmp breturn +Removing instruction jmp b1 +Removing instruction jmp breturn +Removing instruction jmp b1 +Removing instruction jmp breturn +Removing instruction jmp breturn +Removing instruction jmp breturn +Removing instruction jmp b2 +Removing instruction jmp b1 Removing instruction jmp breturn Removing instruction jmp b1 Removing instruction jmp b3 Removing instruction jmp b6 Removing instruction jmp b7 Removing instruction jmp b8 -Removing instruction jmp b9 -Removing instruction jmp breturn -Removing instruction jmp b1 -Removing instruction jmp breturn -Removing instruction jmp b1 -Removing instruction jmp breturn -Removing instruction jmp breturn -Removing instruction jmp b1 -Removing instruction jmp breturn -Removing instruction jmp b1 Removing instruction jmp breturn +Removing instruction jmp b5 +Removing instruction jmp b10 Removing instruction jmp breturn Removing instruction jmp b1 Removing instruction jmp b5 @@ -3669,63 +5915,102 @@ Removing instruction jmp b4 Removing instruction jmp b8 Removing instruction jmp breturn Removing instruction jmp b12 +Removing instruction jmp b1 +Removing instruction jmp breturn Succesful ASM optimization Pass5NextJumpElimination Removing instruction ldy #0 +Replacing instruction lda memA with TXA +Replacing instruction lda #0 with TYA +Removing instruction lda #0 +Removing instruction lda #0 Removing instruction ldy #0 Removing instruction lda #0 Replacing instruction ldx #0 with TAX Removing instruction ldy #0 Removing instruction ldy #0 Succesful ASM optimization Pass5UnnecesaryLoadElimination -Replacing label b1_from_b2 with b1 -Replacing label b1_from_b2 with b1 -Replacing label b1_from_b2 with b1 +Replacing label b2_from_b3 with b2 +Replacing label b1_from_b6 with b1 +Replacing label breturn_from_b14 with breturn Replacing label b1_from_b1 with b1 Replacing label b1_from_b1 with b1 +Replacing label b1_from_b2 with b1 +Replacing label b2_from_b2 with b2 +Replacing label b1_from_b2 with b1 +Replacing label b1_from_b2 with b1 Replacing label b2_from_b1 with b2 Replacing label b1_from_b2 with b1 Replacing label b1_from_b2 with b1 Replacing label b12_from_b3 with b12 Replacing label b3_from_b4 with b3 Replacing label b3_from_b4 with b3 +Replacing label b1_from_b1 with b1 +Replacing label b1_from_b1 with b1 Removing instruction bbegin: -Removing instruction b10_from_bbegin: -Removing instruction main_from_b10: -Removing instruction bend_from_b10: +Removing instruction b13_from_bbegin: +Removing instruction bend_from_b13: Removing instruction b1_from_main: +Removing instruction init_mul_tables_from_b1: Removing instruction b2_from_b1: -Removing instruction b1_from_b2: -Removing instruction b6_from_b3: -Removing instruction print_str_from_b6: -Removing instruction print_word_from_b7: -Removing instruction b8_from_b7: -Removing instruction print_str_from_b8: -Removing instruction breturn_from_b9: +Removing instruction b3_from_b2: +Removing instruction mul_tables_compare_from_b3: +Removing instruction b4_from_b3: +Removing instruction mul_results_compare_from_b4: +Removing instruction b1_from_b6: +Removing instruction b2_from_b1: +Removing instruction b2_from_b3: +Removing instruction b11_from_b10: +Removing instruction print_str_from_b11: +Removing instruction breturn_from_b12: +Removing instruction breturn_from_b14: +Removing instruction b7_from_b6: +Removing instruction print_str_from_b7: +Removing instruction b14_from_b7: +Removing instruction print_ln_from_b14: +Removing instruction b1_from_print_ln: +Removing instruction b1_from_b1: Removing instruction b1_from_print_str: Removing instruction b1_from_b2: -Removing instruction b1_from_b1: +Removing instruction b2_from_b2: +Removing instruction breturn: +Removing instruction b1_from_b2: +Removing instruction b7_from_b6: +Removing instruction print_str_from_b7: +Removing instruction b5_from_b2: +Removing instruction print_str_from_b5: +Removing instruction b10_from_b5: +Removing instruction print_ln_from_b10: Removing instruction b1_from_b2: Removing instruction b2_from_b1: Removing instruction b2_from_b5: Removing instruction b3_from_b4: Removing instruction b12_from_b3: Removing instruction b4_from_b12: +Removing instruction b1_from_b1: Succesful ASM optimization Pass5RedundantLabelElimination -Removing instruction b10: +Removing instruction b13: Removing instruction bend: -Removing instruction init_mul_tables_from_main: +Removing instruction print_cls_from_main: Removing instruction b1: Removing instruction b2: -Removing instruction breturn: -Removing instruction b1_from_mul_tables_compare: Removing instruction b3: -Removing instruction print_cls_from_b3: -Removing instruction b6: -Removing instruction b7: +Removing instruction b4: +Removing instruction breturn: +Removing instruction b1_from_mul_results_compare: Removing instruction b8: Removing instruction b9: -Removing instruction print_word_from_b9: -Removing instruction breturn_from_b2: +Removing instruction b4: +Removing instruction print_str_from_b4: +Removing instruction b10: +Removing instruction print_word_from_b10: +Removing instruction b11: +Removing instruction b12: +Removing instruction print_word_from_b12: +Removing instruction b6: +Removing instruction b7: +Removing instruction b14: +Removing instruction breturn: +Removing instruction breturn: Removing instruction print_byte_from_print_word: Removing instruction b1: Removing instruction print_byte_from_b1: @@ -3736,8 +6021,20 @@ Removing instruction print_char_from_b1: Removing instruction breturn: Removing instruction breturn: Removing instruction breturn: -Removing instruction b1_from_print_cls: -Removing instruction breturn: +Removing instruction b2_from_slow_multiply: +Removing instruction b1_from_b2: +Removing instruction b1_from_mul_tables_compare: +Removing instruction b3: +Removing instruction print_str_from_b3: +Removing instruction b6: +Removing instruction print_word_from_b6: +Removing instruction b7: +Removing instruction b8: +Removing instruction print_word_from_b8: +Removing instruction breturn_from_b8: +Removing instruction b5: +Removing instruction b10: +Removing instruction breturn_from_b10: Removing instruction breturn: Removing instruction b1_from_init_mul_tables: Removing instruction b5: @@ -3745,13 +6042,20 @@ Removing instruction b3_from_b2: Removing instruction b4_from_b3: Removing instruction b8: Removing instruction breturn: +Removing instruction b1_from_print_cls: +Removing instruction breturn: Succesful ASM optimization Pass5UnusedLabelElimination Skipping double jump to b4 in bne b12 Succesful ASM optimization Pass5DoubleJumpElimination +Relabelling long label b1_from_slow_multiply to b3 +Succesful ASM optimization Pass5RelabelLongLabels Removing instruction jmp b1 +Removing instruction jmp b2 +Removing instruction jmp b2 Removing instruction jmp b1 Removing instruction jmp b1 Removing instruction jmp b3 +Removing instruction jmp b1 Succesful ASM optimization Pass5NextJumpElimination Removing instruction b12: Succesful ASM optimization Pass5UnusedLabelElimination @@ -3759,7 +6063,7 @@ Removing unreachable instruction jmp b4 Succesful ASM optimization Pass5UnreachableCodeElimination FINAL SYMBOL TABLE -(label) @10 +(label) @13 (label) @begin (label) @end (byte*) BGCOL @@ -3772,14 +6076,30 @@ FINAL SYMBOL TABLE (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) } +(word()) asm_multiply((byte) asm_multiply::a , (byte) asm_multiply::b) +(label) asm_multiply::@return +(byte) asm_multiply::a +(byte) asm_multiply::a#0 reg byte x 51.5 +(byte) asm_multiply::b +(byte) asm_multiply::b#0 reg byte a 51.5 +(byte*) asm_multiply::memA +(const byte*) asm_multiply::memA#0 memA = ((byte*))(byte/word/signed word) 254 +(byte*) asm_multiply::memB +(const byte*) asm_multiply::memB#0 memB = ((byte*))(byte/word/signed word) 255 +(word) asm_multiply::return +(word) asm_multiply::return#0 return zp ZP_WORD:6 34.33333333333333 +(word) asm_multiply::return#2 return zp ZP_WORD:6 202.0 (byte*) char_cursor -(byte*) char_cursor#1 char_cursor zp ZP_WORD:6 11.0 -(byte*) char_cursor#10 char_cursor zp ZP_WORD:6 0.7142857142857142 -(byte*) char_cursor#17 char_cursor zp ZP_WORD:6 20.0 -(byte*) char_cursor#19 char_cursor zp ZP_WORD:6 3.7 -(byte*) char_cursor#27 char_cursor zp ZP_WORD:6 4.0 -(byte*) char_cursor#39 char_cursor zp ZP_WORD:6 2.0 -(byte*) char_cursor#44 char_cursor zp ZP_WORD:6 4.0 +(byte*) char_cursor#1 char_cursor zp ZP_WORD:8 11.0 +(byte*~) char_cursor#100 char_cursor zp ZP_WORD:8 4.0 +(byte*) char_cursor#11 char_cursor zp ZP_WORD:8 0.823529411764706 +(byte*) char_cursor#2 char_cursor zp ZP_WORD:8 2.1818181818181817 +(byte*) char_cursor#20 char_cursor zp ZP_WORD:8 0.3333333333333333 +(byte*) char_cursor#27 char_cursor zp ZP_WORD:8 40.0 +(byte*) char_cursor#41 char_cursor zp ZP_WORD:8 4.0 +(byte*) char_cursor#64 char_cursor zp ZP_WORD:8 2.0 +(byte*) char_cursor#71 char_cursor zp ZP_WORD:8 10.0 +(byte*~) char_cursor#89 char_cursor zp ZP_WORD:8 4.0 (void()) init_mul_tables() (byte~) init_mul_tables::$2 reg byte a 22.0 (byte~) init_mul_tables::$5 reg byte a 22.0 @@ -3796,29 +6116,29 @@ FINAL SYMBOL TABLE (byte) init_mul_tables::c#1 reg byte x 2.357142857142857 (byte) init_mul_tables::c#2 reg byte x 22.0 (byte) init_mul_tables::dir -(byte) init_mul_tables::dir#2 dir zp ZP_BYTE:10 4.714285714285714 -(byte) init_mul_tables::dir#3 dir zp ZP_BYTE:10 7.333333333333333 +(byte) init_mul_tables::dir#2 dir zp ZP_BYTE:2 4.714285714285714 +(byte) init_mul_tables::dir#3 dir zp ZP_BYTE:2 7.333333333333333 (word) init_mul_tables::sqr -(word) init_mul_tables::sqr#1 sqr zp ZP_WORD:6 7.333333333333333 -(word) init_mul_tables::sqr#2 sqr zp ZP_WORD:6 22.0 -(word) init_mul_tables::sqr#3 sqr zp ZP_WORD:6 9.166666666666666 -(word) init_mul_tables::sqr#4 sqr zp ZP_WORD:6 6.6000000000000005 +(word) init_mul_tables::sqr#1 sqr zp ZP_WORD:8 7.333333333333333 +(word) init_mul_tables::sqr#2 sqr zp ZP_WORD:8 22.0 +(word) init_mul_tables::sqr#3 sqr zp ZP_WORD:8 9.166666666666666 +(word) init_mul_tables::sqr#4 sqr zp ZP_WORD:8 6.6000000000000005 (byte*) init_mul_tables::sqr1_hi -(byte*) init_mul_tables::sqr1_hi#1 sqr1_hi zp ZP_WORD:4 5.5 -(byte*) init_mul_tables::sqr1_hi#2 sqr1_hi zp ZP_WORD:4 3.0 +(byte*) init_mul_tables::sqr1_hi#1 sqr1_hi zp ZP_WORD:6 5.5 +(byte*) init_mul_tables::sqr1_hi#2 sqr1_hi zp ZP_WORD:6 3.0 (byte*) init_mul_tables::sqr1_lo -(byte*) init_mul_tables::sqr1_lo#1 sqr1_lo zp ZP_WORD:2 16.5 -(byte*) init_mul_tables::sqr1_lo#2 sqr1_lo zp ZP_WORD:2 2.5384615384615383 +(byte*) init_mul_tables::sqr1_lo#1 sqr1_lo zp ZP_WORD:4 16.5 +(byte*) init_mul_tables::sqr1_lo#2 sqr1_lo zp ZP_WORD:4 2.5384615384615383 (byte*) init_mul_tables::sqr2_hi -(byte*) init_mul_tables::sqr2_hi#1 sqr2_hi zp ZP_WORD:4 3.142857142857143 -(byte*) init_mul_tables::sqr2_hi#2 sqr2_hi zp ZP_WORD:4 11.0 +(byte*) init_mul_tables::sqr2_hi#1 sqr2_hi zp ZP_WORD:6 3.142857142857143 +(byte*) init_mul_tables::sqr2_hi#2 sqr2_hi zp ZP_WORD:6 11.0 (byte*) init_mul_tables::sqr2_lo -(byte*) init_mul_tables::sqr2_lo#1 sqr2_lo zp ZP_WORD:2 16.5 -(byte*) init_mul_tables::sqr2_lo#2 sqr2_lo zp ZP_WORD:2 4.125 +(byte*) init_mul_tables::sqr2_lo#1 sqr2_lo zp ZP_WORD:4 16.5 +(byte*) init_mul_tables::sqr2_lo#2 sqr2_lo zp ZP_WORD:4 4.125 (byte) init_mul_tables::x_2 -(byte) init_mul_tables::x_2#1 x_2 zp ZP_BYTE:10 11.0 -(byte) init_mul_tables::x_2#2 x_2 zp ZP_BYTE:10 4.888888888888889 -(byte) init_mul_tables::x_2#3 x_2 zp ZP_BYTE:10 8.25 +(byte) init_mul_tables::x_2#1 x_2 zp ZP_BYTE:2 11.0 +(byte) init_mul_tables::x_2#2 x_2 zp ZP_BYTE:2 4.888888888888889 +(byte) init_mul_tables::x_2#3 x_2 zp ZP_BYTE:2 8.25 (byte) init_mul_tables::x_255 (byte) init_mul_tables::x_255#1 reg byte x 5.5 (byte) init_mul_tables::x_255#2 reg byte x 11.0 @@ -3827,10 +6147,44 @@ FINAL SYMBOL TABLE (byte*) init_mul_tables_asm::mem (const byte*) init_mul_tables_asm::mem#0 mem = ((byte*))(byte/word/signed word) 255 (byte*) line_cursor +(byte*) line_cursor#1 line_cursor zp ZP_WORD:4 5.857142857142857 +(byte*) line_cursor#11 line_cursor zp ZP_WORD:4 24.0 +(byte*) line_cursor#17 line_cursor zp ZP_WORD:4 0.18181818181818182 +(byte*) line_cursor#19 line_cursor zp ZP_WORD:4 40.0 +(byte*) line_cursor#22 line_cursor zp ZP_WORD:4 4.0 (void()) main() (label) main::@1 (label) main::@2 +(label) main::@3 +(label) main::@4 (label) main::@return +(void()) mul_results_compare() +(label) mul_results_compare::@1 +(label) mul_results_compare::@10 +(label) mul_results_compare::@11 +(label) mul_results_compare::@12 +(label) mul_results_compare::@14 +(label) mul_results_compare::@2 +(label) mul_results_compare::@3 +(label) mul_results_compare::@4 +(label) mul_results_compare::@6 +(label) mul_results_compare::@7 +(label) mul_results_compare::@8 +(label) mul_results_compare::@9 +(label) mul_results_compare::@return +(byte) mul_results_compare::a +(byte) mul_results_compare::a#1 a zp ZP_BYTE:2 16.5 +(byte) mul_results_compare::a#5 a zp ZP_BYTE:2 14.933333333333332 +(byte) mul_results_compare::b +(byte) mul_results_compare::b#1 b zp ZP_BYTE:3 151.5 +(byte) mul_results_compare::b#2 b zp ZP_BYTE:3 33.666666666666664 +(word) mul_results_compare::ma +(word) mul_results_compare::ma#0 ma zp ZP_WORD:12 25.5 +(word) mul_results_compare::ms +(word) mul_results_compare::ms#0 ms zp ZP_WORD:10 22.666666666666664 +(const string) mul_results_compare::str str = (string) "multiply mismatch slow:@" +(const string) mul_results_compare::str1 str1 = (string) " / fast asm:" +(const string) mul_results_compare::str2 str2 = (string) "multiply results match!@" (byte[512]) mul_sqr1_hi (const byte[512]) mul_sqr1_hi#0 mul_sqr1_hi = { fill( 512, 0) } (byte[512]) mul_sqr1_lo @@ -3841,21 +6195,23 @@ FINAL SYMBOL TABLE (const byte[512]) mul_sqr2_lo#0 mul_sqr2_lo = { fill( 512, 0) } (void()) mul_tables_compare() (label) mul_tables_compare::@1 +(label) mul_tables_compare::@10 (label) mul_tables_compare::@2 (label) mul_tables_compare::@3 +(label) mul_tables_compare::@5 (label) mul_tables_compare::@6 (label) mul_tables_compare::@7 (label) mul_tables_compare::@8 -(label) mul_tables_compare::@9 (label) mul_tables_compare::@return (byte*) mul_tables_compare::asm_sqr -(byte*) mul_tables_compare::asm_sqr#1 asm_sqr zp ZP_WORD:4 7.333333333333333 -(byte*) mul_tables_compare::asm_sqr#2 asm_sqr zp ZP_WORD:4 5.833333333333333 +(byte*) mul_tables_compare::asm_sqr#1 asm_sqr zp ZP_WORD:10 7.333333333333333 +(byte*) mul_tables_compare::asm_sqr#2 asm_sqr zp ZP_WORD:10 8.75 (byte*) mul_tables_compare::kc_sqr -(byte*) mul_tables_compare::kc_sqr#1 kc_sqr zp ZP_WORD:2 16.5 -(byte*) mul_tables_compare::kc_sqr#2 kc_sqr zp ZP_WORD:2 3.1818181818181817 -(const string) mul_tables_compare::str str = (string) "mul table mismatch at @" +(byte*) mul_tables_compare::kc_sqr#1 kc_sqr zp ZP_WORD:4 16.5 +(byte*) mul_tables_compare::kc_sqr#2 kc_sqr zp ZP_WORD:4 3.8888888888888893 +(const string) mul_tables_compare::str str = (string) "multiply table mismatch at @" (const string) mul_tables_compare::str1 str1 = (string) " / @" +(const string) mul_tables_compare::str2 str2 = (string) "multiply tables match!@" (void()) print_byte((byte) print_byte::b) (byte~) print_byte::$0 reg byte y 4.0 (byte~) print_byte::$2 reg byte a 4.0 @@ -3877,33 +6233,61 @@ FINAL SYMBOL TABLE (label) print_cls::@1 (label) print_cls::@return (byte*) print_cls::sc -(byte*) print_cls::sc#1 sc zp ZP_WORD:6 16.5 -(byte*) print_cls::sc#2 sc zp ZP_WORD:6 16.5 +(byte*) print_cls::sc#1 sc zp ZP_WORD:4 16.5 +(byte*) print_cls::sc#2 sc zp ZP_WORD:4 16.5 +(void()) print_ln() +(label) print_ln::@1 +(label) print_ln::@return (void()) print_str((byte*) print_str::str) (label) print_str::@1 (label) print_str::@2 (label) print_str::@return (byte*) print_str::str -(byte*) print_str::str#0 str zp ZP_WORD:8 22.0 -(byte*) print_str::str#3 str zp ZP_WORD:8 11.5 -(byte*) print_str::str#5 str zp ZP_WORD:8 2.0 +(byte*) print_str::str#0 str zp ZP_WORD:6 22.0 +(byte*) print_str::str#7 str zp ZP_WORD:6 11.5 +(byte*) print_str::str#9 str zp ZP_WORD:6 2.0 (void()) print_word((word) print_word::w) (label) print_word::@1 (label) print_word::@return (word) print_word::w -(word) print_word::w#0 w zp ZP_WORD:4 4.0 -(word) print_word::w#1 w zp ZP_WORD:4 4.0 -(word) print_word::w#2 w zp ZP_WORD:4 2.6666666666666665 +(word) print_word::w#0 w zp ZP_WORD:6 4.0 +(word) print_word::w#1 w zp ZP_WORD:6 4.0 +(word) print_word::w#2 w zp ZP_WORD:6 4.0 +(word) print_word::w#3 w zp ZP_WORD:6 4.0 +(word) print_word::w#4 w zp ZP_WORD:6 3.9999999999999996 +(word()) 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:6 1001.0 +(word) slow_multiply::m#3 m zp ZP_WORD:6 2002.0 +(word) slow_multiply::return +(word) slow_multiply::return#0 return zp ZP_WORD:6 367.33333333333337 +(word) slow_multiply::return#2 return zp ZP_WORD:6 202.0 -zp ZP_WORD:2 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::kc_sqr#1 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_lo#1 init_mul_tables::sqr2_lo#2 init_mul_tables::sqr2_lo#1 ] -zp ZP_WORD:4 [ mul_tables_compare::asm_sqr#2 mul_tables_compare::asm_sqr#1 print_word::w#2 print_word::w#0 print_word::w#1 init_mul_tables::sqr1_hi#2 init_mul_tables::sqr1_hi#1 init_mul_tables::sqr2_hi#2 init_mul_tables::sqr2_hi#1 ] +zp ZP_BYTE:2 [ mul_results_compare::a#5 mul_results_compare::a#1 init_mul_tables::x_2#3 init_mul_tables::x_2#2 init_mul_tables::x_2#1 init_mul_tables::dir#2 init_mul_tables::dir#3 slow_multiply::a#0 ] +zp ZP_BYTE:3 [ mul_results_compare::b#2 mul_results_compare::b#1 ] +zp ZP_WORD:4 [ line_cursor#11 line_cursor#22 line_cursor#19 line_cursor#17 line_cursor#1 mul_tables_compare::kc_sqr#2 mul_tables_compare::kc_sqr#1 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_lo#1 init_mul_tables::sqr2_lo#2 init_mul_tables::sqr2_lo#1 print_cls::sc#2 print_cls::sc#1 ] +zp ZP_WORD:6 [ print_str::str#7 print_str::str#9 print_str::str#0 print_word::w#4 print_word::w#2 print_word::w#3 print_word::w#0 print_word::w#1 slow_multiply::return#0 slow_multiply::m#3 slow_multiply::m#1 init_mul_tables::sqr1_hi#2 init_mul_tables::sqr1_hi#1 init_mul_tables::sqr2_hi#2 init_mul_tables::sqr2_hi#1 slow_multiply::return#2 asm_multiply::return#2 asm_multiply::return#0 ] reg byte x [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] reg byte a [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] -zp ZP_WORD:6 [ char_cursor#44 char_cursor#27 char_cursor#39 char_cursor#19 char_cursor#17 char_cursor#10 char_cursor#1 print_cls::sc#2 print_cls::sc#1 init_mul_tables::sqr#3 init_mul_tables::sqr#4 init_mul_tables::sqr#1 init_mul_tables::sqr#2 ] -zp ZP_WORD:8 [ print_str::str#3 print_str::str#5 print_str::str#0 ] +zp ZP_WORD:8 [ char_cursor#41 char_cursor#64 char_cursor#2 char_cursor#71 char_cursor#27 char_cursor#11 char_cursor#89 char_cursor#20 char_cursor#1 char_cursor#100 init_mul_tables::sqr#3 init_mul_tables::sqr#4 init_mul_tables::sqr#1 init_mul_tables::sqr#2 ] +reg byte y [ slow_multiply::i#2 slow_multiply::i#1 ] +zp ZP_WORD:10 [ mul_tables_compare::asm_sqr#2 mul_tables_compare::asm_sqr#1 mul_results_compare::ms#0 ] reg byte x [ init_mul_tables::c#2 init_mul_tables::c#1 ] -zp ZP_BYTE:10 [ init_mul_tables::x_2#3 init_mul_tables::x_2#2 init_mul_tables::x_2#1 init_mul_tables::dir#2 init_mul_tables::dir#3 ] reg byte x [ init_mul_tables::x_255#2 init_mul_tables::x_255#1 ] +reg byte x [ slow_multiply::b#0 ] +reg byte x [ asm_multiply::a#0 ] +reg byte a [ asm_multiply::b#0 ] +zp ZP_WORD:12 [ mul_results_compare::ma#0 ] reg byte y [ print_byte::$0 ] reg byte a [ print_byte::$2 ] reg byte a [ init_mul_tables::$2 ] @@ -3918,128 +6302,510 @@ FINAL ASSEMBLER .pc = $80d "Program" //SEG1 Global Constants & labels .const BGCOL = $d021 - .label char_cursor = 6 + .label char_cursor = 8 + .label line_cursor = 4 //SEG2 @begin -//SEG3 [1] phi from @begin to @10 [phi:@begin->@10] -//SEG4 @10 +//SEG3 [1] phi from @begin to @13 [phi:@begin->@13] +//SEG4 @13 //SEG5 [2] call main param-assignment [ ] ( ) -//SEG6 [4] phi from @10 to main [phi:@10->main] jsr main -//SEG7 [3] phi from @10 to @end [phi:@10->@end] -//SEG8 @end -//SEG9 main +//SEG6 [3] phi from @13 to @end [phi:@13->@end] +//SEG7 @end +//SEG8 main main: { - //SEG10 [5] call init_mul_tables param-assignment [ ] ( main:2 [ ] ) - //SEG11 [66] phi from main to init_mul_tables [phi:main->init_mul_tables] - jsr init_mul_tables - //SEG12 [6] phi from main to main::@1 [phi:main->main::@1] - //SEG13 main::@1 - //SEG14 [7] call init_mul_tables_asm param-assignment [ ] ( main:2 [ ] ) - jsr init_mul_tables_asm - //SEG15 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] - //SEG16 main::@2 - //SEG17 [9] call mul_tables_compare param-assignment [ ] ( main:2 [ ] ) - jsr mul_tables_compare - //SEG18 main::@return - //SEG19 [10] return [ ] ( main:2 [ ] ) - rts -} -//SEG20 mul_tables_compare -mul_tables_compare: { - .label asm_sqr = 4 - .label kc_sqr = 2 - //SEG21 [11] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 5 [ ] ( main:2::mul_tables_compare:9 [ ] ) -- _deref_pbuc1=vbuc2 + //SEG9 [4] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 5 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2 lda #5 sta BGCOL - //SEG22 [12] phi from mul_tables_compare to mul_tables_compare::@1 [phi:mul_tables_compare->mul_tables_compare::@1] - //SEG23 [12] phi (byte*) mul_tables_compare::asm_sqr#2 = (const byte[512]) asm_mul_sqr1_lo#0 [phi:mul_tables_compare->mul_tables_compare::@1#0] -- pbuz1=pbuc1 - lda #asm_mul_sqr1_lo - sta asm_sqr+1 - //SEG24 [12] phi (byte*) mul_tables_compare::kc_sqr#2 = (const byte[512]) mul_sqr1_lo#0 [phi:mul_tables_compare->mul_tables_compare::@1#1] -- pbuz1=pbuc1 - lda #mul_sqr1_lo - sta kc_sqr+1 - //SEG25 [12] phi from mul_tables_compare::@2 to mul_tables_compare::@1 [phi:mul_tables_compare::@2->mul_tables_compare::@1] - //SEG26 [12] phi (byte*) mul_tables_compare::asm_sqr#2 = (byte*) mul_tables_compare::asm_sqr#1 [phi:mul_tables_compare::@2->mul_tables_compare::@1#0] -- register_copy - //SEG27 [12] phi (byte*) mul_tables_compare::kc_sqr#2 = (byte*) mul_tables_compare::kc_sqr#1 [phi:mul_tables_compare::@2->mul_tables_compare::@1#1] -- register_copy - //SEG28 mul_tables_compare::@1 + //SEG10 [5] call print_cls param-assignment [ ] ( main:2 [ ] ) + //SEG11 [146] phi from main to print_cls [phi:main->print_cls] + jsr print_cls + //SEG12 [6] phi from main to main::@1 [phi:main->main::@1] + //SEG13 main::@1 + //SEG14 [7] call init_mul_tables param-assignment [ ] ( main:2 [ ] ) + //SEG15 [117] phi from main::@1 to init_mul_tables [phi:main::@1->init_mul_tables] + jsr init_mul_tables + //SEG16 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG17 main::@2 + //SEG18 [9] call init_mul_tables_asm param-assignment [ ] ( main:2 [ ] ) + jsr init_mul_tables_asm + //SEG19 [10] phi from main::@2 to main::@3 [phi:main::@2->main::@3] + //SEG20 main::@3 + //SEG21 [11] call mul_tables_compare param-assignment [ line_cursor#17 char_cursor#20 ] ( main:2 [ line_cursor#17 char_cursor#20 ] ) + //SEG22 [90] phi from main::@3 to mul_tables_compare [phi:main::@3->mul_tables_compare] + jsr mul_tables_compare + //SEG23 [12] phi from main::@3 to main::@4 [phi:main::@3->main::@4] + //SEG24 main::@4 + //SEG25 [13] call mul_results_compare param-assignment [ ] ( main:2 [ ] ) + //SEG26 [15] phi from main::@4 to mul_results_compare [phi:main::@4->mul_results_compare] + jsr mul_results_compare + //SEG27 main::@return + //SEG28 [14] return [ ] ( main:2 [ ] ) + rts +} +//SEG29 mul_results_compare +mul_results_compare: { + .label ms = $a + .label ma = $c + .label b = 3 + .label a = 2 + //SEG30 [16] phi from mul_results_compare to mul_results_compare::@1 [phi:mul_results_compare->mul_results_compare::@1] + //SEG31 [16] phi (byte) mul_results_compare::a#5 = (byte/signed byte/word/signed word) 0 [phi:mul_results_compare->mul_results_compare::@1#0] -- vbuz1=vbuc1 + lda #0 + sta a + //SEG32 [16] phi from mul_results_compare::@6 to mul_results_compare::@1 [phi:mul_results_compare::@6->mul_results_compare::@1] + //SEG33 [16] phi (byte) mul_results_compare::a#5 = (byte) mul_results_compare::a#1 [phi:mul_results_compare::@6->mul_results_compare::@1#0] -- register_copy + //SEG34 mul_results_compare::@1 b1: - //SEG29 [13] if(*((byte*) mul_tables_compare::kc_sqr#2)==*((byte*) mul_tables_compare::asm_sqr#2)) goto mul_tables_compare::@2 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 ] ( main:2::mul_tables_compare:9 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 ] ) -- _deref_pbuz1_eq__deref_pbuz2_then_la1 - ldy #0 - lda (kc_sqr),y - cmp (asm_sqr),y - beq b2 - //SEG30 mul_tables_compare::@3 - //SEG31 [14] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 2 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 ] ( main:2::mul_tables_compare:9 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 ] ) -- _deref_pbuc1=vbuc2 + //SEG35 [17] phi from mul_results_compare::@1 to mul_results_compare::@2 [phi:mul_results_compare::@1->mul_results_compare::@2] + //SEG36 [17] phi (byte) mul_results_compare::b#2 = (byte/signed byte/word/signed word) 0 [phi:mul_results_compare::@1->mul_results_compare::@2#0] -- vbuz1=vbuc1 + lda #0 + sta b + //SEG37 [17] phi from mul_results_compare::@3 to mul_results_compare::@2 [phi:mul_results_compare::@3->mul_results_compare::@2] + //SEG38 [17] phi (byte) mul_results_compare::b#2 = (byte) mul_results_compare::b#1 [phi:mul_results_compare::@3->mul_results_compare::@2#0] -- register_copy + //SEG39 mul_results_compare::@2 + b2: + //SEG40 [18] (byte) slow_multiply::a#0 ← (byte) mul_results_compare::a#5 [ mul_results_compare::a#5 mul_results_compare::b#2 slow_multiply::a#0 line_cursor#17 char_cursor#20 ] ( main:2::mul_results_compare:13 [ mul_results_compare::a#5 mul_results_compare::b#2 slow_multiply::a#0 line_cursor#17 char_cursor#20 ] ) + // (byte) slow_multiply::a#0 = (byte) mul_results_compare::a#5 // register copy zp ZP_BYTE:2 + //SEG41 [19] (byte) slow_multiply::b#0 ← (byte) mul_results_compare::b#2 [ mul_results_compare::a#5 mul_results_compare::b#2 slow_multiply::a#0 slow_multiply::b#0 line_cursor#17 char_cursor#20 ] ( main:2::mul_results_compare:13 [ mul_results_compare::a#5 mul_results_compare::b#2 slow_multiply::a#0 slow_multiply::b#0 line_cursor#17 char_cursor#20 ] ) -- vbuxx=vbuz1 + ldx b + //SEG42 [20] call slow_multiply param-assignment [ mul_results_compare::a#5 mul_results_compare::b#2 slow_multiply::return#0 line_cursor#17 char_cursor#20 ] ( main:2::mul_results_compare:13 [ mul_results_compare::a#5 mul_results_compare::b#2 slow_multiply::return#0 line_cursor#17 char_cursor#20 ] ) + jsr slow_multiply + //SEG43 [21] (word) slow_multiply::return#2 ← (word) slow_multiply::return#0 [ mul_results_compare::a#5 mul_results_compare::b#2 slow_multiply::return#2 line_cursor#17 char_cursor#20 ] ( main:2::mul_results_compare:13 [ mul_results_compare::a#5 mul_results_compare::b#2 slow_multiply::return#2 line_cursor#17 char_cursor#20 ] ) + // (word) slow_multiply::return#2 = (word) slow_multiply::return#0 // register copy zp ZP_WORD:6 + //SEG44 mul_results_compare::@8 + //SEG45 [22] (word) mul_results_compare::ms#0 ← (word) slow_multiply::return#2 [ mul_results_compare::a#5 mul_results_compare::b#2 mul_results_compare::ms#0 line_cursor#17 char_cursor#20 ] ( main:2::mul_results_compare:13 [ mul_results_compare::a#5 mul_results_compare::b#2 mul_results_compare::ms#0 line_cursor#17 char_cursor#20 ] ) -- vwuz1=vwuz2 + lda slow_multiply.return + sta ms + lda slow_multiply.return+1 + sta ms+1 + //SEG46 [23] (byte) asm_multiply::a#0 ← (byte) mul_results_compare::a#5 [ mul_results_compare::a#5 mul_results_compare::b#2 mul_results_compare::ms#0 asm_multiply::a#0 line_cursor#17 char_cursor#20 ] ( main:2::mul_results_compare:13 [ mul_results_compare::a#5 mul_results_compare::b#2 mul_results_compare::ms#0 asm_multiply::a#0 line_cursor#17 char_cursor#20 ] ) -- vbuxx=vbuz1 + ldx a + //SEG47 [24] (byte) asm_multiply::b#0 ← (byte) mul_results_compare::b#2 [ mul_results_compare::a#5 mul_results_compare::b#2 mul_results_compare::ms#0 asm_multiply::a#0 asm_multiply::b#0 line_cursor#17 char_cursor#20 ] ( main:2::mul_results_compare:13 [ mul_results_compare::a#5 mul_results_compare::b#2 mul_results_compare::ms#0 asm_multiply::a#0 asm_multiply::b#0 line_cursor#17 char_cursor#20 ] ) -- vbuaa=vbuz1 + lda b + //SEG48 [25] call asm_multiply param-assignment [ mul_results_compare::a#5 mul_results_compare::b#2 mul_results_compare::ms#0 asm_multiply::return#0 line_cursor#17 char_cursor#20 ] ( main:2::mul_results_compare:13 [ mul_results_compare::a#5 mul_results_compare::b#2 mul_results_compare::ms#0 asm_multiply::return#0 line_cursor#17 char_cursor#20 ] ) + jsr asm_multiply + //SEG49 [26] (word) asm_multiply::return#2 ← (word) asm_multiply::return#0 [ mul_results_compare::a#5 mul_results_compare::b#2 mul_results_compare::ms#0 asm_multiply::return#2 line_cursor#17 char_cursor#20 ] ( main:2::mul_results_compare:13 [ mul_results_compare::a#5 mul_results_compare::b#2 mul_results_compare::ms#0 asm_multiply::return#2 line_cursor#17 char_cursor#20 ] ) + // (word) asm_multiply::return#2 = (word) asm_multiply::return#0 // register copy zp ZP_WORD:6 + //SEG50 mul_results_compare::@9 + //SEG51 [27] (word) mul_results_compare::ma#0 ← (word) asm_multiply::return#2 [ mul_results_compare::a#5 mul_results_compare::b#2 mul_results_compare::ms#0 mul_results_compare::ma#0 line_cursor#17 char_cursor#20 ] ( main:2::mul_results_compare:13 [ mul_results_compare::a#5 mul_results_compare::b#2 mul_results_compare::ms#0 mul_results_compare::ma#0 line_cursor#17 char_cursor#20 ] ) -- vwuz1=vwuz2 + lda asm_multiply.return + sta ma + lda asm_multiply.return+1 + sta ma+1 + //SEG52 [28] if((word) mul_results_compare::ms#0==(word) mul_results_compare::ma#0) goto mul_results_compare::@3 [ mul_results_compare::a#5 mul_results_compare::b#2 mul_results_compare::ms#0 mul_results_compare::ma#0 line_cursor#17 char_cursor#20 ] ( main:2::mul_results_compare:13 [ mul_results_compare::a#5 mul_results_compare::b#2 mul_results_compare::ms#0 mul_results_compare::ma#0 line_cursor#17 char_cursor#20 ] ) -- vwuz1_eq_vwuz2_then_la1 + lda ms + cmp ma + bne !+ + lda ms+1 + cmp ma+1 + beq b3 + !: + //SEG53 mul_results_compare::@4 + //SEG54 [29] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 2 [ mul_results_compare::ms#0 mul_results_compare::ma#0 line_cursor#17 char_cursor#20 ] ( main:2::mul_results_compare:13 [ mul_results_compare::ms#0 mul_results_compare::ma#0 line_cursor#17 char_cursor#20 ] ) -- _deref_pbuc1=vbuc2 lda #2 sta BGCOL - //SEG32 [15] call print_cls param-assignment [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 ] ( main:2::mul_tables_compare:9 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 ] ) - //SEG33 [54] phi from mul_tables_compare::@3 to print_cls [phi:mul_tables_compare::@3->print_cls] - jsr print_cls - //SEG34 [16] phi from mul_tables_compare::@3 to mul_tables_compare::@6 [phi:mul_tables_compare::@3->mul_tables_compare::@6] - //SEG35 mul_tables_compare::@6 - //SEG36 [17] call print_str param-assignment [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 char_cursor#19 ] ( main:2::mul_tables_compare:9 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 char_cursor#19 ] ) - //SEG37 [47] phi from mul_tables_compare::@6 to print_str [phi:mul_tables_compare::@6->print_str] - //SEG38 [47] phi (byte*) char_cursor#44 = ((byte*))(word/signed word) 1024 [phi:mul_tables_compare::@6->print_str#0] -- pbuz1=pbuc1 - lda #<$400 - sta char_cursor - lda #>$400 - sta char_cursor+1 - //SEG39 [47] phi (byte*) print_str::str#5 = (const string) mul_tables_compare::str [phi:mul_tables_compare::@6->print_str#1] -- pbuz1=pbuc1 + //SEG55 [30] call print_str param-assignment [ mul_results_compare::ms#0 mul_results_compare::ma#0 line_cursor#17 char_cursor#2 ] ( main:2::mul_results_compare:13 [ mul_results_compare::ms#0 mul_results_compare::ma#0 line_cursor#17 char_cursor#2 ] ) + //SEG56 [53] phi from mul_results_compare::@4 to print_str [phi:mul_results_compare::@4->print_str] + //SEG57 [53] phi (byte*) char_cursor#71 = (byte*) char_cursor#20 [phi:mul_results_compare::@4->print_str#0] -- register_copy + //SEG58 [53] phi (byte*) print_str::str#9 = (const string) mul_results_compare::str [phi:mul_results_compare::@4->print_str#1] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str - //SEG40 mul_tables_compare::@7 - //SEG41 [18] (word) print_word::w#0 ← ((word)) (byte*) mul_tables_compare::asm_sqr#2 [ mul_tables_compare::kc_sqr#2 print_word::w#0 char_cursor#19 ] ( main:2::mul_tables_compare:9 [ mul_tables_compare::kc_sqr#2 print_word::w#0 char_cursor#19 ] ) -- vwuz1=_word_pbuz1 - //SEG42 [19] call print_word param-assignment [ mul_tables_compare::kc_sqr#2 char_cursor#10 ] ( main:2::mul_tables_compare:9 [ mul_tables_compare::kc_sqr#2 char_cursor#10 ] ) - //SEG43 [29] phi from mul_tables_compare::@7 to print_word [phi:mul_tables_compare::@7->print_word] - //SEG44 [29] phi (word) print_word::w#2 = (word) print_word::w#0 [phi:mul_tables_compare::@7->print_word#0] -- register_copy + //SEG59 mul_results_compare::@10 + //SEG60 [31] (word) print_word::w#2 ← (word) mul_results_compare::ms#0 [ mul_results_compare::ma#0 print_word::w#2 line_cursor#17 char_cursor#2 ] ( main:2::mul_results_compare:13 [ mul_results_compare::ma#0 print_word::w#2 line_cursor#17 char_cursor#2 ] ) -- vwuz1=vwuz2 + lda ms + sta print_word.w + lda ms+1 + sta print_word.w+1 + //SEG61 [32] call print_word param-assignment [ mul_results_compare::ma#0 char_cursor#11 line_cursor#17 ] ( main:2::mul_results_compare:13 [ mul_results_compare::ma#0 char_cursor#11 line_cursor#17 ] ) + //SEG62 [60] phi from mul_results_compare::@10 to print_word [phi:mul_results_compare::@10->print_word] + //SEG63 [60] phi (word) print_word::w#4 = (word) print_word::w#2 [phi:mul_results_compare::@10->print_word#0] -- register_copy jsr print_word - //SEG45 [20] phi from mul_tables_compare::@7 to mul_tables_compare::@8 [phi:mul_tables_compare::@7->mul_tables_compare::@8] - //SEG46 mul_tables_compare::@8 - //SEG47 [21] call print_str param-assignment [ mul_tables_compare::kc_sqr#2 char_cursor#19 ] ( main:2::mul_tables_compare:9 [ mul_tables_compare::kc_sqr#2 char_cursor#19 ] ) - //SEG48 [47] phi from mul_tables_compare::@8 to print_str [phi:mul_tables_compare::@8->print_str] - //SEG49 [47] phi (byte*) char_cursor#44 = (byte*) char_cursor#10 [phi:mul_tables_compare::@8->print_str#0] -- register_copy - //SEG50 [47] phi (byte*) print_str::str#5 = (const string) mul_tables_compare::str1 [phi:mul_tables_compare::@8->print_str#1] -- pbuz1=pbuc1 + //SEG64 [33] phi from mul_results_compare::@10 to mul_results_compare::@11 [phi:mul_results_compare::@10->mul_results_compare::@11] + //SEG65 mul_results_compare::@11 + //SEG66 [34] call print_str param-assignment [ mul_results_compare::ma#0 line_cursor#17 char_cursor#2 ] ( main:2::mul_results_compare:13 [ mul_results_compare::ma#0 line_cursor#17 char_cursor#2 ] ) + //SEG67 [53] phi from mul_results_compare::@11 to print_str [phi:mul_results_compare::@11->print_str] + //SEG68 [53] phi (byte*) char_cursor#71 = (byte*) char_cursor#11 [phi:mul_results_compare::@11->print_str#0] -- register_copy + //SEG69 [53] phi (byte*) print_str::str#9 = (const string) mul_results_compare::str1 [phi:mul_results_compare::@11->print_str#1] -- pbuz1=pbuc1 lda #str1 sta print_str.str+1 jsr print_str - //SEG51 mul_tables_compare::@9 - //SEG52 [22] (word) print_word::w#1 ← ((word)) (byte*) mul_tables_compare::kc_sqr#2 [ print_word::w#1 char_cursor#19 ] ( main:2::mul_tables_compare:9 [ print_word::w#1 char_cursor#19 ] ) -- vwuz1=_word_pbuz2 + //SEG70 mul_results_compare::@12 + //SEG71 [35] (word) print_word::w#3 ← (word) mul_results_compare::ma#0 [ print_word::w#3 line_cursor#17 char_cursor#2 ] ( main:2::mul_results_compare:13 [ print_word::w#3 line_cursor#17 char_cursor#2 ] ) -- vwuz1=vwuz2 + lda ma + sta print_word.w + lda ma+1 + sta print_word.w+1 + //SEG72 [36] call print_word param-assignment [ char_cursor#11 line_cursor#17 ] ( main:2::mul_results_compare:13 [ char_cursor#11 line_cursor#17 ] ) + //SEG73 [60] phi from mul_results_compare::@12 to print_word [phi:mul_results_compare::@12->print_word] + //SEG74 [60] phi (word) print_word::w#4 = (word) print_word::w#3 [phi:mul_results_compare::@12->print_word#0] -- register_copy + jsr print_word + //SEG75 [37] phi from mul_results_compare::@12 mul_results_compare::@14 to mul_results_compare::@return [phi:mul_results_compare::@12/mul_results_compare::@14->mul_results_compare::@return] + //SEG76 [37] phi (byte*) line_cursor#19 = (byte*) line_cursor#17 [phi:mul_results_compare::@12/mul_results_compare::@14->mul_results_compare::@return#0] -- register_copy + //SEG77 [37] phi (byte*) char_cursor#27 = (byte*) char_cursor#11 [phi:mul_results_compare::@12/mul_results_compare::@14->mul_results_compare::@return#1] -- register_copy + //SEG78 mul_results_compare::@return + breturn: + //SEG79 [38] return [ ] ( main:2::mul_results_compare:13 [ ] ) + rts + //SEG80 mul_results_compare::@3 + b3: + //SEG81 [39] (byte) mul_results_compare::b#1 ← ++ (byte) mul_results_compare::b#2 [ mul_results_compare::a#5 mul_results_compare::b#1 line_cursor#17 char_cursor#20 ] ( main:2::mul_results_compare:13 [ mul_results_compare::a#5 mul_results_compare::b#1 line_cursor#17 char_cursor#20 ] ) -- vbuz1=_inc_vbuz1 + inc b + //SEG82 [40] if((byte) mul_results_compare::b#1!=(byte/signed byte/word/signed word) 0) goto mul_results_compare::@2 [ mul_results_compare::a#5 mul_results_compare::b#1 line_cursor#17 char_cursor#20 ] ( main:2::mul_results_compare:13 [ mul_results_compare::a#5 mul_results_compare::b#1 line_cursor#17 char_cursor#20 ] ) -- vbuz1_neq_0_then_la1 + lda b + bne b2 + //SEG83 mul_results_compare::@6 + //SEG84 [41] (byte) mul_results_compare::a#1 ← ++ (byte) mul_results_compare::a#5 [ mul_results_compare::a#1 line_cursor#17 char_cursor#20 ] ( main:2::mul_results_compare:13 [ mul_results_compare::a#1 line_cursor#17 char_cursor#20 ] ) -- vbuz1=_inc_vbuz1 + inc a + //SEG85 [42] if((byte) mul_results_compare::a#1!=(byte/signed byte/word/signed word) 0) goto mul_results_compare::@1 [ mul_results_compare::a#1 line_cursor#17 char_cursor#20 ] ( main:2::mul_results_compare:13 [ mul_results_compare::a#1 line_cursor#17 char_cursor#20 ] ) -- vbuz1_neq_0_then_la1 + lda a + bne b1 + //SEG86 [43] phi from mul_results_compare::@6 to mul_results_compare::@7 [phi:mul_results_compare::@6->mul_results_compare::@7] + //SEG87 mul_results_compare::@7 + //SEG88 [44] call print_str param-assignment [ line_cursor#17 char_cursor#2 ] ( main:2::mul_results_compare:13 [ line_cursor#17 char_cursor#2 ] ) + //SEG89 [53] phi from mul_results_compare::@7 to print_str [phi:mul_results_compare::@7->print_str] + //SEG90 [53] phi (byte*) char_cursor#71 = (byte*) char_cursor#20 [phi:mul_results_compare::@7->print_str#0] -- register_copy + //SEG91 [53] phi (byte*) print_str::str#9 = (const string) mul_results_compare::str2 [phi:mul_results_compare::@7->print_str#1] -- pbuz1=pbuc1 + lda #str2 + sta print_str.str+1 + jsr print_str + //SEG92 [45] phi from mul_results_compare::@7 to mul_results_compare::@14 [phi:mul_results_compare::@7->mul_results_compare::@14] + //SEG93 mul_results_compare::@14 + //SEG94 [46] call print_ln param-assignment [ line_cursor#1 ] ( main:2::mul_results_compare:13 [ line_cursor#1 ] ) + //SEG95 [48] phi from mul_results_compare::@14 to print_ln [phi:mul_results_compare::@14->print_ln] + //SEG96 [48] phi (byte*) line_cursor#22 = (byte*) line_cursor#17 [phi:mul_results_compare::@14->print_ln#0] -- register_copy + jsr print_ln + //SEG97 [47] (byte*~) char_cursor#89 ← (byte*) line_cursor#1 [ char_cursor#89 line_cursor#1 ] ( main:2::mul_results_compare:13 [ char_cursor#89 line_cursor#1 ] ) -- pbuz1=pbuz2 + lda line_cursor + sta char_cursor + lda line_cursor+1 + sta char_cursor+1 + jmp breturn + str: .text "multiply mismatch slow:@" + str1: .text " / fast asm:" + str2: .text "multiply results match!@" +} +//SEG98 print_ln +print_ln: { + //SEG99 [49] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1] + //SEG100 [49] phi (byte*) line_cursor#11 = (byte*) line_cursor#22 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy + //SEG101 print_ln::@1 + b1: + //SEG102 [50] (byte*) line_cursor#1 ← (byte*) line_cursor#11 + (byte/signed byte/word/signed word) 40 [ line_cursor#1 char_cursor#2 ] ( main:2::mul_results_compare:13::print_ln:46 [ line_cursor#1 char_cursor#2 ] main:2::mul_tables_compare:11::print_ln:109 [ line_cursor#1 char_cursor#2 ] ) -- pbuz1=pbuz1_plus_vbuc1 + lda line_cursor + clc + adc #$28 + sta line_cursor + bcc !+ + inc line_cursor+1 + !: + //SEG103 [51] if((byte*) line_cursor#1<(byte*) char_cursor#2) goto print_ln::@1 [ line_cursor#1 char_cursor#2 ] ( main:2::mul_results_compare:13::print_ln:46 [ line_cursor#1 char_cursor#2 ] main:2::mul_tables_compare:11::print_ln:109 [ line_cursor#1 char_cursor#2 ] ) -- pbuz1_lt_pbuz2_then_la1 + lda line_cursor+1 + cmp char_cursor+1 + bcc b1 + bne !+ + lda line_cursor + cmp char_cursor + bcc b1 + !: + //SEG104 print_ln::@return + //SEG105 [52] return [ line_cursor#1 ] ( main:2::mul_results_compare:13::print_ln:46 [ line_cursor#1 ] main:2::mul_tables_compare:11::print_ln:109 [ line_cursor#1 ] ) + rts +} +//SEG106 print_str +print_str: { + .label str = 6 + //SEG107 [54] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] + //SEG108 [54] phi (byte*) char_cursor#2 = (byte*) char_cursor#71 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy + //SEG109 [54] phi (byte*) print_str::str#7 = (byte*) print_str::str#9 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy + //SEG110 print_str::@1 + b1: + //SEG111 [55] if(*((byte*) print_str::str#7)!=(byte) '@') goto print_str::@2 [ char_cursor#2 print_str::str#7 ] ( main:2::mul_results_compare:13::print_str:30 [ mul_results_compare::ms#0 mul_results_compare::ma#0 line_cursor#17 char_cursor#2 print_str::str#7 ] main:2::mul_results_compare:13::print_str:34 [ mul_results_compare::ma#0 line_cursor#17 char_cursor#2 print_str::str#7 ] main:2::mul_results_compare:13::print_str:44 [ line_cursor#17 char_cursor#2 print_str::str#7 ] main:2::mul_tables_compare:11::print_str:94 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 char_cursor#2 print_str::str#7 ] main:2::mul_tables_compare:11::print_str:98 [ mul_tables_compare::kc_sqr#2 char_cursor#2 print_str::str#7 ] main:2::mul_tables_compare:11::print_str:107 [ char_cursor#2 print_str::str#7 ] ) -- _deref_pbuz1_neq_vbuc1_then_la1 + ldy #0 + lda (str),y + cmp #'@' + bne b2 + //SEG112 print_str::@return + //SEG113 [56] return [ char_cursor#2 ] ( main:2::mul_results_compare:13::print_str:30 [ mul_results_compare::ms#0 mul_results_compare::ma#0 line_cursor#17 char_cursor#2 ] main:2::mul_results_compare:13::print_str:34 [ mul_results_compare::ma#0 line_cursor#17 char_cursor#2 ] main:2::mul_results_compare:13::print_str:44 [ line_cursor#17 char_cursor#2 ] main:2::mul_tables_compare:11::print_str:94 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 char_cursor#2 ] main:2::mul_tables_compare:11::print_str:98 [ mul_tables_compare::kc_sqr#2 char_cursor#2 ] main:2::mul_tables_compare:11::print_str:107 [ char_cursor#2 ] ) + rts + //SEG114 print_str::@2 + b2: + //SEG115 [57] *((byte*) char_cursor#2) ← *((byte*) print_str::str#7) [ char_cursor#2 print_str::str#7 ] ( main:2::mul_results_compare:13::print_str:30 [ mul_results_compare::ms#0 mul_results_compare::ma#0 line_cursor#17 char_cursor#2 print_str::str#7 ] main:2::mul_results_compare:13::print_str:34 [ mul_results_compare::ma#0 line_cursor#17 char_cursor#2 print_str::str#7 ] main:2::mul_results_compare:13::print_str:44 [ line_cursor#17 char_cursor#2 print_str::str#7 ] main:2::mul_tables_compare:11::print_str:94 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 char_cursor#2 print_str::str#7 ] main:2::mul_tables_compare:11::print_str:98 [ mul_tables_compare::kc_sqr#2 char_cursor#2 print_str::str#7 ] main:2::mul_tables_compare:11::print_str:107 [ char_cursor#2 print_str::str#7 ] ) -- _deref_pbuz1=_deref_pbuz2 + ldy #0 + lda (str),y + sta (char_cursor),y + //SEG116 [58] (byte*) char_cursor#1 ← ++ (byte*) char_cursor#2 [ print_str::str#7 char_cursor#1 ] ( main:2::mul_results_compare:13::print_str:30 [ mul_results_compare::ms#0 mul_results_compare::ma#0 line_cursor#17 print_str::str#7 char_cursor#1 ] main:2::mul_results_compare:13::print_str:34 [ mul_results_compare::ma#0 line_cursor#17 print_str::str#7 char_cursor#1 ] main:2::mul_results_compare:13::print_str:44 [ line_cursor#17 print_str::str#7 char_cursor#1 ] main:2::mul_tables_compare:11::print_str:94 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 print_str::str#7 char_cursor#1 ] main:2::mul_tables_compare:11::print_str:98 [ mul_tables_compare::kc_sqr#2 print_str::str#7 char_cursor#1 ] main:2::mul_tables_compare:11::print_str:107 [ print_str::str#7 char_cursor#1 ] ) -- pbuz1=_inc_pbuz1 + inc char_cursor + bne !+ + inc char_cursor+1 + !: + //SEG117 [59] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#7 [ print_str::str#0 char_cursor#1 ] ( main:2::mul_results_compare:13::print_str:30 [ mul_results_compare::ms#0 mul_results_compare::ma#0 line_cursor#17 print_str::str#0 char_cursor#1 ] main:2::mul_results_compare:13::print_str:34 [ mul_results_compare::ma#0 line_cursor#17 print_str::str#0 char_cursor#1 ] main:2::mul_results_compare:13::print_str:44 [ line_cursor#17 print_str::str#0 char_cursor#1 ] main:2::mul_tables_compare:11::print_str:94 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 print_str::str#0 char_cursor#1 ] main:2::mul_tables_compare:11::print_str:98 [ mul_tables_compare::kc_sqr#2 print_str::str#0 char_cursor#1 ] main:2::mul_tables_compare:11::print_str:107 [ print_str::str#0 char_cursor#1 ] ) -- pbuz1=_inc_pbuz1 + inc str + bne !+ + inc str+1 + !: + jmp b1 +} +//SEG118 print_word +print_word: { + .label w = 6 + //SEG119 [61] (byte) print_byte::b#0 ← > (word) print_word::w#4 [ char_cursor#2 print_word::w#4 print_byte::b#0 ] ( main:2::mul_results_compare:13::print_word:32 [ mul_results_compare::ma#0 line_cursor#17 char_cursor#2 print_word::w#4 print_byte::b#0 ] main:2::mul_results_compare:13::print_word:36 [ line_cursor#17 char_cursor#2 print_word::w#4 print_byte::b#0 ] main:2::mul_tables_compare:11::print_word:96 [ mul_tables_compare::kc_sqr#2 char_cursor#2 print_word::w#4 print_byte::b#0 ] main:2::mul_tables_compare:11::print_word:100 [ char_cursor#2 print_word::w#4 print_byte::b#0 ] ) -- vbuxx=_hi_vwuz1 + lda w+1 + tax + //SEG120 [62] call print_byte param-assignment [ char_cursor#11 print_word::w#4 ] ( main:2::mul_results_compare:13::print_word:32 [ mul_results_compare::ma#0 line_cursor#17 char_cursor#11 print_word::w#4 ] main:2::mul_results_compare:13::print_word:36 [ line_cursor#17 char_cursor#11 print_word::w#4 ] main:2::mul_tables_compare:11::print_word:96 [ mul_tables_compare::kc_sqr#2 char_cursor#11 print_word::w#4 ] main:2::mul_tables_compare:11::print_word:100 [ char_cursor#11 print_word::w#4 ] ) + //SEG121 [66] phi from print_word to print_byte [phi:print_word->print_byte] + //SEG122 [66] phi (byte*) char_cursor#64 = (byte*) char_cursor#2 [phi:print_word->print_byte#0] -- register_copy + //SEG123 [66] phi (byte) print_byte::b#2 = (byte) print_byte::b#0 [phi:print_word->print_byte#1] -- register_copy + jsr print_byte + //SEG124 print_word::@1 + //SEG125 [63] (byte) print_byte::b#1 ← < (word) print_word::w#4 [ char_cursor#11 print_byte::b#1 ] ( main:2::mul_results_compare:13::print_word:32 [ mul_results_compare::ma#0 line_cursor#17 char_cursor#11 print_byte::b#1 ] main:2::mul_results_compare:13::print_word:36 [ line_cursor#17 char_cursor#11 print_byte::b#1 ] main:2::mul_tables_compare:11::print_word:96 [ mul_tables_compare::kc_sqr#2 char_cursor#11 print_byte::b#1 ] main:2::mul_tables_compare:11::print_word:100 [ char_cursor#11 print_byte::b#1 ] ) -- vbuxx=_lo_vwuz1 + lda w + tax + //SEG126 [64] call print_byte param-assignment [ char_cursor#11 ] ( main:2::mul_results_compare:13::print_word:32 [ mul_results_compare::ma#0 line_cursor#17 char_cursor#11 ] main:2::mul_results_compare:13::print_word:36 [ line_cursor#17 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:96 [ mul_tables_compare::kc_sqr#2 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:100 [ char_cursor#11 ] ) + //SEG127 [66] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] + //SEG128 [66] phi (byte*) char_cursor#64 = (byte*) char_cursor#11 [phi:print_word::@1->print_byte#0] -- register_copy + //SEG129 [66] phi (byte) print_byte::b#2 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#1] -- register_copy + jsr print_byte + //SEG130 print_word::@return + //SEG131 [65] return [ char_cursor#11 ] ( main:2::mul_results_compare:13::print_word:32 [ mul_results_compare::ma#0 line_cursor#17 char_cursor#11 ] main:2::mul_results_compare:13::print_word:36 [ line_cursor#17 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:96 [ mul_tables_compare::kc_sqr#2 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:100 [ char_cursor#11 ] ) + rts +} +//SEG132 print_byte +print_byte: { + //SEG133 [67] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word) 4 [ print_byte::b#2 char_cursor#64 print_byte::$0 ] ( main:2::mul_results_compare:13::print_word:32::print_byte:62 [ mul_results_compare::ma#0 line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#64 print_byte::$0 ] main:2::mul_results_compare:13::print_word:36::print_byte:62 [ line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#64 print_byte::$0 ] main:2::mul_tables_compare:11::print_word:96::print_byte:62 [ mul_tables_compare::kc_sqr#2 print_word::w#4 print_byte::b#2 char_cursor#64 print_byte::$0 ] main:2::mul_tables_compare:11::print_word:100::print_byte:62 [ print_word::w#4 print_byte::b#2 char_cursor#64 print_byte::$0 ] main:2::mul_results_compare:13::print_word:32::print_byte:64 [ mul_results_compare::ma#0 line_cursor#17 print_byte::b#2 char_cursor#64 print_byte::$0 ] main:2::mul_results_compare:13::print_word:36::print_byte:64 [ line_cursor#17 print_byte::b#2 char_cursor#64 print_byte::$0 ] main:2::mul_tables_compare:11::print_word:96::print_byte:64 [ mul_tables_compare::kc_sqr#2 print_byte::b#2 char_cursor#64 print_byte::$0 ] main:2::mul_tables_compare:11::print_word:100::print_byte:64 [ print_byte::b#2 char_cursor#64 print_byte::$0 ] ) -- vbuyy=vbuxx_ror_4 + txa + lsr + lsr + lsr + lsr + tay + //SEG134 [68] (byte) print_char::ch#0 ← *((const byte[]) print_byte::hextab#0 + (byte~) print_byte::$0) [ print_byte::b#2 char_cursor#64 print_char::ch#0 ] ( main:2::mul_results_compare:13::print_word:32::print_byte:62 [ mul_results_compare::ma#0 line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#64 print_char::ch#0 ] main:2::mul_results_compare:13::print_word:36::print_byte:62 [ line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#64 print_char::ch#0 ] main:2::mul_tables_compare:11::print_word:96::print_byte:62 [ mul_tables_compare::kc_sqr#2 print_word::w#4 print_byte::b#2 char_cursor#64 print_char::ch#0 ] main:2::mul_tables_compare:11::print_word:100::print_byte:62 [ print_word::w#4 print_byte::b#2 char_cursor#64 print_char::ch#0 ] main:2::mul_results_compare:13::print_word:32::print_byte:64 [ mul_results_compare::ma#0 line_cursor#17 print_byte::b#2 char_cursor#64 print_char::ch#0 ] main:2::mul_results_compare:13::print_word:36::print_byte:64 [ line_cursor#17 print_byte::b#2 char_cursor#64 print_char::ch#0 ] main:2::mul_tables_compare:11::print_word:96::print_byte:64 [ mul_tables_compare::kc_sqr#2 print_byte::b#2 char_cursor#64 print_char::ch#0 ] main:2::mul_tables_compare:11::print_word:100::print_byte:64 [ print_byte::b#2 char_cursor#64 print_char::ch#0 ] ) -- vbuaa=pbuc1_derefidx_vbuyy + lda hextab,y + //SEG135 [69] call print_char param-assignment [ char_cursor#11 print_byte::b#2 ] ( main:2::mul_results_compare:13::print_word:32::print_byte:62 [ mul_results_compare::ma#0 line_cursor#17 print_word::w#4 char_cursor#11 print_byte::b#2 ] main:2::mul_results_compare:13::print_word:36::print_byte:62 [ line_cursor#17 print_word::w#4 char_cursor#11 print_byte::b#2 ] main:2::mul_tables_compare:11::print_word:96::print_byte:62 [ mul_tables_compare::kc_sqr#2 print_word::w#4 char_cursor#11 print_byte::b#2 ] main:2::mul_tables_compare:11::print_word:100::print_byte:62 [ print_word::w#4 char_cursor#11 print_byte::b#2 ] main:2::mul_results_compare:13::print_word:32::print_byte:64 [ mul_results_compare::ma#0 line_cursor#17 char_cursor#11 print_byte::b#2 ] main:2::mul_results_compare:13::print_word:36::print_byte:64 [ line_cursor#17 char_cursor#11 print_byte::b#2 ] main:2::mul_tables_compare:11::print_word:96::print_byte:64 [ mul_tables_compare::kc_sqr#2 char_cursor#11 print_byte::b#2 ] main:2::mul_tables_compare:11::print_word:100::print_byte:64 [ char_cursor#11 print_byte::b#2 ] ) + //SEG136 [74] phi from print_byte to print_char [phi:print_byte->print_char] + //SEG137 [74] phi (byte*) char_cursor#41 = (byte*) char_cursor#64 [phi:print_byte->print_char#0] -- register_copy + //SEG138 [74] phi (byte) print_char::ch#2 = (byte) print_char::ch#0 [phi:print_byte->print_char#1] -- register_copy + jsr print_char + //SEG139 print_byte::@1 + //SEG140 [70] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word) 15 [ char_cursor#11 print_byte::$2 ] ( main:2::mul_results_compare:13::print_word:32::print_byte:62 [ mul_results_compare::ma#0 line_cursor#17 print_word::w#4 char_cursor#11 print_byte::$2 ] main:2::mul_results_compare:13::print_word:36::print_byte:62 [ line_cursor#17 print_word::w#4 char_cursor#11 print_byte::$2 ] main:2::mul_tables_compare:11::print_word:96::print_byte:62 [ mul_tables_compare::kc_sqr#2 print_word::w#4 char_cursor#11 print_byte::$2 ] main:2::mul_tables_compare:11::print_word:100::print_byte:62 [ print_word::w#4 char_cursor#11 print_byte::$2 ] main:2::mul_results_compare:13::print_word:32::print_byte:64 [ mul_results_compare::ma#0 line_cursor#17 char_cursor#11 print_byte::$2 ] main:2::mul_results_compare:13::print_word:36::print_byte:64 [ line_cursor#17 char_cursor#11 print_byte::$2 ] main:2::mul_tables_compare:11::print_word:96::print_byte:64 [ mul_tables_compare::kc_sqr#2 char_cursor#11 print_byte::$2 ] main:2::mul_tables_compare:11::print_word:100::print_byte:64 [ char_cursor#11 print_byte::$2 ] ) -- vbuaa=vbuxx_band_vbuc1 + txa + and #$f + //SEG141 [71] (byte) print_char::ch#1 ← *((const byte[]) print_byte::hextab#0 + (byte~) print_byte::$2) [ char_cursor#11 print_char::ch#1 ] ( main:2::mul_results_compare:13::print_word:32::print_byte:62 [ mul_results_compare::ma#0 line_cursor#17 print_word::w#4 char_cursor#11 print_char::ch#1 ] main:2::mul_results_compare:13::print_word:36::print_byte:62 [ line_cursor#17 print_word::w#4 char_cursor#11 print_char::ch#1 ] main:2::mul_tables_compare:11::print_word:96::print_byte:62 [ mul_tables_compare::kc_sqr#2 print_word::w#4 char_cursor#11 print_char::ch#1 ] main:2::mul_tables_compare:11::print_word:100::print_byte:62 [ print_word::w#4 char_cursor#11 print_char::ch#1 ] main:2::mul_results_compare:13::print_word:32::print_byte:64 [ mul_results_compare::ma#0 line_cursor#17 char_cursor#11 print_char::ch#1 ] main:2::mul_results_compare:13::print_word:36::print_byte:64 [ line_cursor#17 char_cursor#11 print_char::ch#1 ] main:2::mul_tables_compare:11::print_word:96::print_byte:64 [ mul_tables_compare::kc_sqr#2 char_cursor#11 print_char::ch#1 ] main:2::mul_tables_compare:11::print_word:100::print_byte:64 [ char_cursor#11 print_char::ch#1 ] ) -- vbuaa=pbuc1_derefidx_vbuaa + tax + lda hextab,x + //SEG142 [72] call print_char param-assignment [ char_cursor#11 ] ( main:2::mul_results_compare:13::print_word:32::print_byte:62 [ mul_results_compare::ma#0 line_cursor#17 print_word::w#4 char_cursor#11 ] main:2::mul_results_compare:13::print_word:36::print_byte:62 [ line_cursor#17 print_word::w#4 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:96::print_byte:62 [ mul_tables_compare::kc_sqr#2 print_word::w#4 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:100::print_byte:62 [ print_word::w#4 char_cursor#11 ] main:2::mul_results_compare:13::print_word:32::print_byte:64 [ mul_results_compare::ma#0 line_cursor#17 char_cursor#11 ] main:2::mul_results_compare:13::print_word:36::print_byte:64 [ line_cursor#17 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:96::print_byte:64 [ mul_tables_compare::kc_sqr#2 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:100::print_byte:64 [ char_cursor#11 ] ) + //SEG143 [74] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] + //SEG144 [74] phi (byte*) char_cursor#41 = (byte*) char_cursor#11 [phi:print_byte::@1->print_char#0] -- register_copy + //SEG145 [74] phi (byte) print_char::ch#2 = (byte) print_char::ch#1 [phi:print_byte::@1->print_char#1] -- register_copy + jsr print_char + //SEG146 print_byte::@return + //SEG147 [73] return [ char_cursor#11 ] ( main:2::mul_results_compare:13::print_word:32::print_byte:62 [ mul_results_compare::ma#0 line_cursor#17 print_word::w#4 char_cursor#11 ] main:2::mul_results_compare:13::print_word:36::print_byte:62 [ line_cursor#17 print_word::w#4 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:96::print_byte:62 [ mul_tables_compare::kc_sqr#2 print_word::w#4 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:100::print_byte:62 [ print_word::w#4 char_cursor#11 ] main:2::mul_results_compare:13::print_word:32::print_byte:64 [ mul_results_compare::ma#0 line_cursor#17 char_cursor#11 ] main:2::mul_results_compare:13::print_word:36::print_byte:64 [ line_cursor#17 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:96::print_byte:64 [ mul_tables_compare::kc_sqr#2 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:100::print_byte:64 [ char_cursor#11 ] ) + rts + hextab: .byte '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' +} +//SEG148 print_char +print_char: { + //SEG149 [75] *((byte*) char_cursor#41) ← (byte) print_char::ch#2 [ char_cursor#41 ] ( main:2::mul_results_compare:13::print_word:32::print_byte:62::print_char:69 [ mul_results_compare::ma#0 line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#41 ] main:2::mul_results_compare:13::print_word:36::print_byte:62::print_char:69 [ line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#41 ] main:2::mul_tables_compare:11::print_word:96::print_byte:62::print_char:69 [ mul_tables_compare::kc_sqr#2 print_word::w#4 print_byte::b#2 char_cursor#41 ] main:2::mul_tables_compare:11::print_word:100::print_byte:62::print_char:69 [ print_word::w#4 print_byte::b#2 char_cursor#41 ] main:2::mul_results_compare:13::print_word:32::print_byte:64::print_char:69 [ mul_results_compare::ma#0 line_cursor#17 print_byte::b#2 char_cursor#41 ] main:2::mul_results_compare:13::print_word:36::print_byte:64::print_char:69 [ line_cursor#17 print_byte::b#2 char_cursor#41 ] main:2::mul_tables_compare:11::print_word:96::print_byte:64::print_char:69 [ mul_tables_compare::kc_sqr#2 print_byte::b#2 char_cursor#41 ] main:2::mul_tables_compare:11::print_word:100::print_byte:64::print_char:69 [ print_byte::b#2 char_cursor#41 ] main:2::mul_results_compare:13::print_word:32::print_byte:62::print_char:72 [ mul_results_compare::ma#0 line_cursor#17 print_word::w#4 char_cursor#41 ] main:2::mul_results_compare:13::print_word:36::print_byte:62::print_char:72 [ line_cursor#17 print_word::w#4 char_cursor#41 ] main:2::mul_tables_compare:11::print_word:96::print_byte:62::print_char:72 [ mul_tables_compare::kc_sqr#2 print_word::w#4 char_cursor#41 ] main:2::mul_tables_compare:11::print_word:100::print_byte:62::print_char:72 [ print_word::w#4 char_cursor#41 ] main:2::mul_results_compare:13::print_word:32::print_byte:64::print_char:72 [ mul_results_compare::ma#0 line_cursor#17 char_cursor#41 ] main:2::mul_results_compare:13::print_word:36::print_byte:64::print_char:72 [ line_cursor#17 char_cursor#41 ] main:2::mul_tables_compare:11::print_word:96::print_byte:64::print_char:72 [ mul_tables_compare::kc_sqr#2 char_cursor#41 ] main:2::mul_tables_compare:11::print_word:100::print_byte:64::print_char:72 [ char_cursor#41 ] ) -- _deref_pbuz1=vbuaa + ldy #0 + sta (char_cursor),y + //SEG150 [76] (byte*) char_cursor#11 ← ++ (byte*) char_cursor#41 [ char_cursor#11 ] ( main:2::mul_results_compare:13::print_word:32::print_byte:62::print_char:69 [ mul_results_compare::ma#0 line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#11 ] main:2::mul_results_compare:13::print_word:36::print_byte:62::print_char:69 [ line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:96::print_byte:62::print_char:69 [ mul_tables_compare::kc_sqr#2 print_word::w#4 print_byte::b#2 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:100::print_byte:62::print_char:69 [ print_word::w#4 print_byte::b#2 char_cursor#11 ] main:2::mul_results_compare:13::print_word:32::print_byte:64::print_char:69 [ mul_results_compare::ma#0 line_cursor#17 print_byte::b#2 char_cursor#11 ] main:2::mul_results_compare:13::print_word:36::print_byte:64::print_char:69 [ line_cursor#17 print_byte::b#2 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:96::print_byte:64::print_char:69 [ mul_tables_compare::kc_sqr#2 print_byte::b#2 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:100::print_byte:64::print_char:69 [ print_byte::b#2 char_cursor#11 ] main:2::mul_results_compare:13::print_word:32::print_byte:62::print_char:72 [ mul_results_compare::ma#0 line_cursor#17 print_word::w#4 char_cursor#11 ] main:2::mul_results_compare:13::print_word:36::print_byte:62::print_char:72 [ line_cursor#17 print_word::w#4 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:96::print_byte:62::print_char:72 [ mul_tables_compare::kc_sqr#2 print_word::w#4 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:100::print_byte:62::print_char:72 [ print_word::w#4 char_cursor#11 ] main:2::mul_results_compare:13::print_word:32::print_byte:64::print_char:72 [ mul_results_compare::ma#0 line_cursor#17 char_cursor#11 ] main:2::mul_results_compare:13::print_word:36::print_byte:64::print_char:72 [ line_cursor#17 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:96::print_byte:64::print_char:72 [ mul_tables_compare::kc_sqr#2 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:100::print_byte:64::print_char:72 [ char_cursor#11 ] ) -- pbuz1=_inc_pbuz1 + inc char_cursor + bne !+ + inc char_cursor+1 + !: + //SEG151 print_char::@return + //SEG152 [77] return [ char_cursor#11 ] ( main:2::mul_results_compare:13::print_word:32::print_byte:62::print_char:69 [ mul_results_compare::ma#0 line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#11 ] main:2::mul_results_compare:13::print_word:36::print_byte:62::print_char:69 [ line_cursor#17 print_word::w#4 print_byte::b#2 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:96::print_byte:62::print_char:69 [ mul_tables_compare::kc_sqr#2 print_word::w#4 print_byte::b#2 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:100::print_byte:62::print_char:69 [ print_word::w#4 print_byte::b#2 char_cursor#11 ] main:2::mul_results_compare:13::print_word:32::print_byte:64::print_char:69 [ mul_results_compare::ma#0 line_cursor#17 print_byte::b#2 char_cursor#11 ] main:2::mul_results_compare:13::print_word:36::print_byte:64::print_char:69 [ line_cursor#17 print_byte::b#2 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:96::print_byte:64::print_char:69 [ mul_tables_compare::kc_sqr#2 print_byte::b#2 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:100::print_byte:64::print_char:69 [ print_byte::b#2 char_cursor#11 ] main:2::mul_results_compare:13::print_word:32::print_byte:62::print_char:72 [ mul_results_compare::ma#0 line_cursor#17 print_word::w#4 char_cursor#11 ] main:2::mul_results_compare:13::print_word:36::print_byte:62::print_char:72 [ line_cursor#17 print_word::w#4 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:96::print_byte:62::print_char:72 [ mul_tables_compare::kc_sqr#2 print_word::w#4 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:100::print_byte:62::print_char:72 [ print_word::w#4 char_cursor#11 ] main:2::mul_results_compare:13::print_word:32::print_byte:64::print_char:72 [ mul_results_compare::ma#0 line_cursor#17 char_cursor#11 ] main:2::mul_results_compare:13::print_word:36::print_byte:64::print_char:72 [ line_cursor#17 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:96::print_byte:64::print_char:72 [ mul_tables_compare::kc_sqr#2 char_cursor#11 ] main:2::mul_tables_compare:11::print_word:100::print_byte:64::print_char:72 [ char_cursor#11 ] ) + rts +} +//SEG153 asm_multiply +asm_multiply: { + .const memA = $fe + .const memB = $ff + .label return = 6 + //SEG154 [78] *((const byte*) asm_multiply::memA#0) ← (byte) asm_multiply::a#0 [ asm_multiply::b#0 ] ( main:2::mul_results_compare:13::asm_multiply:25 [ mul_results_compare::a#5 mul_results_compare::b#2 mul_results_compare::ms#0 line_cursor#17 char_cursor#20 asm_multiply::b#0 ] ) -- _deref_pbuc1=vbuxx + stx memA + //SEG155 [79] *((const byte*) asm_multiply::memB#0) ← (byte) asm_multiply::b#0 [ ] ( main:2::mul_results_compare:13::asm_multiply:25 [ mul_results_compare::a#5 mul_results_compare::b#2 mul_results_compare::ms#0 line_cursor#17 char_cursor#20 ] ) -- _deref_pbuc1=vbuaa + sta memB + //SEG156 asm { ldamemAstasm1+1stasm3+1eor#$ffstasm2+1stasm4+1ldxmemBsecsm1:ldaasm_mul_sqr1_lo,xsm2:sbcasm_mul_sqr2_lo,xstamemAsm3:ldaasm_mul_sqr1_hi,xsm4:sbcasm_mul_sqr2_hi,xstamemB } + txa + sta sm1+1 + sta sm3+1 + eor #$ff + sta sm2+1 + sta sm4+1 + ldx memB + sec + sm1: + lda asm_mul_sqr1_lo,x + sm2: + sbc asm_mul_sqr2_lo,x + sta memA + sm3: + lda asm_mul_sqr1_hi,x + sm4: + sbc asm_mul_sqr2_hi,x + sta memB + //SEG157 [81] (word) asm_multiply::return#0 ← *((const byte*) asm_multiply::memB#0) w= *((const byte*) asm_multiply::memA#0) [ asm_multiply::return#0 ] ( main:2::mul_results_compare:13::asm_multiply:25 [ mul_results_compare::a#5 mul_results_compare::b#2 mul_results_compare::ms#0 line_cursor#17 char_cursor#20 asm_multiply::return#0 ] ) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 + lda memA + sta return + lda memB + sta return+1 + //SEG158 asm_multiply::@return + //SEG159 [82] return [ asm_multiply::return#0 ] ( main:2::mul_results_compare:13::asm_multiply:25 [ mul_results_compare::a#5 mul_results_compare::b#2 mul_results_compare::ms#0 line_cursor#17 char_cursor#20 asm_multiply::return#0 ] ) + rts +} +//SEG160 slow_multiply +slow_multiply: { + .label return = 6 + .label m = 6 + .label a = 2 + //SEG161 [83] if((byte) slow_multiply::a#0<=(byte/signed byte/word/signed word) 0) goto slow_multiply::@1 [ slow_multiply::a#0 slow_multiply::b#0 ] ( main:2::mul_results_compare:13::slow_multiply:20 [ mul_results_compare::a#5 mul_results_compare::b#2 line_cursor#17 char_cursor#20 slow_multiply::a#0 slow_multiply::b#0 ] ) -- vbuz1_le_0_then_la1 + lda a + cmp #0 + beq b3 + //SEG162 [84] phi from slow_multiply to slow_multiply::@2 [phi:slow_multiply->slow_multiply::@2] + //SEG163 [84] phi (byte) slow_multiply::i#2 = (byte/signed byte/word/signed word) 0 [phi:slow_multiply->slow_multiply::@2#0] -- vbuyy=vbuc1 + ldy #0 + //SEG164 [84] phi (word) slow_multiply::m#3 = (byte/signed byte/word/signed word) 0 [phi:slow_multiply->slow_multiply::@2#1] -- vwuz1=vbuc1 + tya + sta m + sta m+1 + //SEG165 [84] phi from slow_multiply::@2 to slow_multiply::@2 [phi:slow_multiply::@2->slow_multiply::@2] + //SEG166 [84] phi (byte) slow_multiply::i#2 = (byte) slow_multiply::i#1 [phi:slow_multiply::@2->slow_multiply::@2#0] -- register_copy + //SEG167 [84] phi (word) slow_multiply::m#3 = (word) slow_multiply::m#1 [phi:slow_multiply::@2->slow_multiply::@2#1] -- register_copy + //SEG168 slow_multiply::@2 + b2: + //SEG169 [85] (word) slow_multiply::m#1 ← (word) slow_multiply::m#3 + (byte) slow_multiply::b#0 [ slow_multiply::a#0 slow_multiply::b#0 slow_multiply::i#2 slow_multiply::m#1 ] ( main:2::mul_results_compare:13::slow_multiply:20 [ mul_results_compare::a#5 mul_results_compare::b#2 line_cursor#17 char_cursor#20 slow_multiply::a#0 slow_multiply::b#0 slow_multiply::i#2 slow_multiply::m#1 ] ) -- vwuz1=vwuz1_plus_vbuxx + txa + clc + adc m + sta m + bcc !+ + inc m+1 + !: + //SEG170 [86] (byte) slow_multiply::i#1 ← ++ (byte) slow_multiply::i#2 [ slow_multiply::a#0 slow_multiply::b#0 slow_multiply::m#1 slow_multiply::i#1 ] ( main:2::mul_results_compare:13::slow_multiply:20 [ mul_results_compare::a#5 mul_results_compare::b#2 line_cursor#17 char_cursor#20 slow_multiply::a#0 slow_multiply::b#0 slow_multiply::m#1 slow_multiply::i#1 ] ) -- vbuyy=_inc_vbuyy + iny + //SEG171 [87] if((byte) slow_multiply::i#1!=(byte) slow_multiply::a#0) goto slow_multiply::@2 [ slow_multiply::a#0 slow_multiply::b#0 slow_multiply::m#1 slow_multiply::i#1 ] ( main:2::mul_results_compare:13::slow_multiply:20 [ mul_results_compare::a#5 mul_results_compare::b#2 line_cursor#17 char_cursor#20 slow_multiply::a#0 slow_multiply::b#0 slow_multiply::m#1 slow_multiply::i#1 ] ) -- vbuyy_neq_vbuz1_then_la1 + cpy a + bne b2 + //SEG172 [88] phi from slow_multiply::@2 to slow_multiply::@1 [phi:slow_multiply::@2->slow_multiply::@1] + //SEG173 [88] phi (word) slow_multiply::return#0 = (word) slow_multiply::m#1 [phi:slow_multiply::@2->slow_multiply::@1#0] -- register_copy + jmp b1 + //SEG174 [88] phi from slow_multiply to slow_multiply::@1 [phi:slow_multiply->slow_multiply::@1] + b3: + //SEG175 [88] phi (word) slow_multiply::return#0 = (byte/signed byte/word/signed word) 0 [phi:slow_multiply->slow_multiply::@1#0] -- vwuz1=vbuc1 + lda #0 + sta return + sta return+1 + //SEG176 slow_multiply::@1 + b1: + //SEG177 slow_multiply::@return + //SEG178 [89] return [ slow_multiply::return#0 ] ( main:2::mul_results_compare:13::slow_multiply:20 [ mul_results_compare::a#5 mul_results_compare::b#2 line_cursor#17 char_cursor#20 slow_multiply::return#0 ] ) + rts +} +//SEG179 mul_tables_compare +mul_tables_compare: { + .label asm_sqr = $a + .label kc_sqr = 4 + //SEG180 [91] phi from mul_tables_compare to mul_tables_compare::@1 [phi:mul_tables_compare->mul_tables_compare::@1] + //SEG181 [91] phi (byte*) mul_tables_compare::asm_sqr#2 = (const byte[512]) asm_mul_sqr1_lo#0 [phi:mul_tables_compare->mul_tables_compare::@1#0] -- pbuz1=pbuc1 + lda #asm_mul_sqr1_lo + sta asm_sqr+1 + //SEG182 [91] phi (byte*) mul_tables_compare::kc_sqr#2 = (const byte[512]) mul_sqr1_lo#0 [phi:mul_tables_compare->mul_tables_compare::@1#1] -- pbuz1=pbuc1 + lda #mul_sqr1_lo + sta kc_sqr+1 + //SEG183 [91] phi from mul_tables_compare::@2 to mul_tables_compare::@1 [phi:mul_tables_compare::@2->mul_tables_compare::@1] + //SEG184 [91] phi (byte*) mul_tables_compare::asm_sqr#2 = (byte*) mul_tables_compare::asm_sqr#1 [phi:mul_tables_compare::@2->mul_tables_compare::@1#0] -- register_copy + //SEG185 [91] phi (byte*) mul_tables_compare::kc_sqr#2 = (byte*) mul_tables_compare::kc_sqr#1 [phi:mul_tables_compare::@2->mul_tables_compare::@1#1] -- register_copy + //SEG186 mul_tables_compare::@1 + b1: + //SEG187 [92] if(*((byte*) mul_tables_compare::kc_sqr#2)==*((byte*) mul_tables_compare::asm_sqr#2)) goto mul_tables_compare::@2 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 ] ( main:2::mul_tables_compare:11 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 ] ) -- _deref_pbuz1_eq__deref_pbuz2_then_la1 + ldy #0 + lda (kc_sqr),y + cmp (asm_sqr),y + beq b2 + //SEG188 mul_tables_compare::@3 + //SEG189 [93] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 2 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 ] ( main:2::mul_tables_compare:11 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 ] ) -- _deref_pbuc1=vbuc2 + lda #2 + sta BGCOL + //SEG190 [94] call print_str param-assignment [ char_cursor#2 mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 ] ( main:2::mul_tables_compare:11 [ char_cursor#2 mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 ] ) + //SEG191 [53] phi from mul_tables_compare::@3 to print_str [phi:mul_tables_compare::@3->print_str] + //SEG192 [53] phi (byte*) char_cursor#71 = ((byte*))(word/signed word) 1024 [phi:mul_tables_compare::@3->print_str#0] -- pbuz1=pbuc1 + lda #<$400 + sta char_cursor + lda #>$400 + sta char_cursor+1 + //SEG193 [53] phi (byte*) print_str::str#9 = (const string) mul_tables_compare::str [phi:mul_tables_compare::@3->print_str#1] -- pbuz1=pbuc1 + lda #str + sta print_str.str+1 + jsr print_str + //SEG194 mul_tables_compare::@6 + //SEG195 [95] (word) print_word::w#0 ← ((word)) (byte*) mul_tables_compare::asm_sqr#2 [ char_cursor#2 print_word::w#0 mul_tables_compare::kc_sqr#2 ] ( main:2::mul_tables_compare:11 [ char_cursor#2 print_word::w#0 mul_tables_compare::kc_sqr#2 ] ) -- vwuz1=_word_pbuz2 + lda asm_sqr + sta print_word.w + lda asm_sqr+1 + sta print_word.w+1 + //SEG196 [96] call print_word param-assignment [ char_cursor#11 mul_tables_compare::kc_sqr#2 ] ( main:2::mul_tables_compare:11 [ char_cursor#11 mul_tables_compare::kc_sqr#2 ] ) + //SEG197 [60] phi from mul_tables_compare::@6 to print_word [phi:mul_tables_compare::@6->print_word] + //SEG198 [60] phi (word) print_word::w#4 = (word) print_word::w#0 [phi:mul_tables_compare::@6->print_word#0] -- register_copy + jsr print_word + //SEG199 [97] phi from mul_tables_compare::@6 to mul_tables_compare::@7 [phi:mul_tables_compare::@6->mul_tables_compare::@7] + //SEG200 mul_tables_compare::@7 + //SEG201 [98] call print_str param-assignment [ char_cursor#2 mul_tables_compare::kc_sqr#2 ] ( main:2::mul_tables_compare:11 [ char_cursor#2 mul_tables_compare::kc_sqr#2 ] ) + //SEG202 [53] phi from mul_tables_compare::@7 to print_str [phi:mul_tables_compare::@7->print_str] + //SEG203 [53] phi (byte*) char_cursor#71 = (byte*) char_cursor#11 [phi:mul_tables_compare::@7->print_str#0] -- register_copy + //SEG204 [53] phi (byte*) print_str::str#9 = (const string) mul_tables_compare::str1 [phi:mul_tables_compare::@7->print_str#1] -- pbuz1=pbuc1 + lda #str1 + sta print_str.str+1 + jsr print_str + //SEG205 mul_tables_compare::@8 + //SEG206 [99] (word) print_word::w#1 ← ((word)) (byte*) mul_tables_compare::kc_sqr#2 [ char_cursor#2 print_word::w#1 ] ( main:2::mul_tables_compare:11 [ char_cursor#2 print_word::w#1 ] ) -- vwuz1=_word_pbuz2 lda kc_sqr sta print_word.w lda kc_sqr+1 sta print_word.w+1 - //SEG53 [23] call print_word param-assignment [ char_cursor#10 ] ( main:2::mul_tables_compare:9 [ char_cursor#10 ] ) - //SEG54 [29] phi from mul_tables_compare::@9 to print_word [phi:mul_tables_compare::@9->print_word] - //SEG55 [29] phi (word) print_word::w#2 = (word) print_word::w#1 [phi:mul_tables_compare::@9->print_word#0] -- register_copy + //SEG207 [100] call print_word param-assignment [ char_cursor#11 ] ( main:2::mul_tables_compare:11 [ char_cursor#11 ] ) + //SEG208 [60] phi from mul_tables_compare::@8 to print_word [phi:mul_tables_compare::@8->print_word] + //SEG209 [60] phi (word) print_word::w#4 = (word) print_word::w#1 [phi:mul_tables_compare::@8->print_word#0] -- register_copy jsr print_word - //SEG56 [24] phi from mul_tables_compare::@9 to mul_tables_compare::@return [phi:mul_tables_compare::@9->mul_tables_compare::@return] - //SEG57 [24] phi (byte*) char_cursor#17 = (byte*) char_cursor#10 [phi:mul_tables_compare::@9->mul_tables_compare::@return#0] -- register_copy - //SEG58 mul_tables_compare::@return + //SEG210 [101] phi from mul_tables_compare::@8 to mul_tables_compare::@return [phi:mul_tables_compare::@8->mul_tables_compare::@return] + //SEG211 [101] phi (byte*) line_cursor#17 = ((byte*))(word/signed word) 1024 [phi:mul_tables_compare::@8->mul_tables_compare::@return#0] -- pbuz1=pbuc1 + lda #<$400 + sta line_cursor + lda #>$400 + sta line_cursor+1 + //SEG212 [101] phi (byte*) char_cursor#20 = (byte*) char_cursor#11 [phi:mul_tables_compare::@8->mul_tables_compare::@return#1] -- register_copy + //SEG213 mul_tables_compare::@return breturn: - //SEG59 [25] return [ ] ( main:2::mul_tables_compare:9 [ ] ) + //SEG214 [102] return [ line_cursor#17 char_cursor#20 ] ( main:2::mul_tables_compare:11 [ line_cursor#17 char_cursor#20 ] ) rts - //SEG60 mul_tables_compare::@2 + //SEG215 mul_tables_compare::@2 b2: - //SEG61 [26] (byte*) mul_tables_compare::asm_sqr#1 ← ++ (byte*) mul_tables_compare::asm_sqr#2 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#1 ] ( main:2::mul_tables_compare:9 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#1 ] ) -- pbuz1=_inc_pbuz1 + //SEG216 [103] (byte*) mul_tables_compare::asm_sqr#1 ← ++ (byte*) mul_tables_compare::asm_sqr#2 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#1 ] ( main:2::mul_tables_compare:11 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#1 ] ) -- pbuz1=_inc_pbuz1 inc asm_sqr bne !+ inc asm_sqr+1 !: - //SEG62 [27] (byte*) mul_tables_compare::kc_sqr#1 ← ++ (byte*) mul_tables_compare::kc_sqr#2 [ mul_tables_compare::kc_sqr#1 mul_tables_compare::asm_sqr#1 ] ( main:2::mul_tables_compare:9 [ mul_tables_compare::kc_sqr#1 mul_tables_compare::asm_sqr#1 ] ) -- pbuz1=_inc_pbuz1 + //SEG217 [104] (byte*) mul_tables_compare::kc_sqr#1 ← ++ (byte*) mul_tables_compare::kc_sqr#2 [ mul_tables_compare::kc_sqr#1 mul_tables_compare::asm_sqr#1 ] ( main:2::mul_tables_compare:11 [ mul_tables_compare::kc_sqr#1 mul_tables_compare::asm_sqr#1 ] ) -- pbuz1=_inc_pbuz1 inc kc_sqr bne !+ inc kc_sqr+1 !: - //SEG63 [28] if((byte*) mul_tables_compare::kc_sqr#1<(const byte[512]) mul_sqr1_lo#0+(word/signed word) 512*(byte/signed byte/word/signed word) 4) goto mul_tables_compare::@1 [ mul_tables_compare::kc_sqr#1 mul_tables_compare::asm_sqr#1 ] ( main:2::mul_tables_compare:9 [ mul_tables_compare::kc_sqr#1 mul_tables_compare::asm_sqr#1 ] ) -- pbuz1_lt_pbuc1_then_la1 + //SEG218 [105] if((byte*) mul_tables_compare::kc_sqr#1<(const byte[512]) mul_sqr1_lo#0+(word/signed word) 512*(byte/signed byte/word/signed word) 4) goto mul_tables_compare::@1 [ mul_tables_compare::kc_sqr#1 mul_tables_compare::asm_sqr#1 ] ( main:2::mul_tables_compare:11 [ mul_tables_compare::kc_sqr#1 mul_tables_compare::asm_sqr#1 ] ) -- pbuz1_lt_pbuc1_then_la1 lda kc_sqr+1 cmp #>mul_sqr1_lo+$200*4 bcc b1 @@ -4048,158 +6814,48 @@ mul_tables_compare: { cmp #mul_tables_compare::@return] - //SEG65 [24] phi (byte*) char_cursor#17 = ((byte*))(word/signed word) 1024 [phi:mul_tables_compare::@2->mul_tables_compare::@return#0] -- pbuz1=pbuc1 + //SEG219 [106] phi from mul_tables_compare::@2 to mul_tables_compare::@5 [phi:mul_tables_compare::@2->mul_tables_compare::@5] + //SEG220 mul_tables_compare::@5 + //SEG221 [107] call print_str param-assignment [ char_cursor#2 ] ( main:2::mul_tables_compare:11 [ char_cursor#2 ] ) + //SEG222 [53] phi from mul_tables_compare::@5 to print_str [phi:mul_tables_compare::@5->print_str] + //SEG223 [53] phi (byte*) char_cursor#71 = ((byte*))(word/signed word) 1024 [phi:mul_tables_compare::@5->print_str#0] -- pbuz1=pbuc1 lda #<$400 sta char_cursor lda #>$400 sta char_cursor+1 - jmp breturn - str: .text "mul table mismatch at @" - str1: .text " / @" -} -//SEG66 print_word -print_word: { - .label w = 4 - //SEG67 [30] (byte) print_byte::b#0 ← > (word) print_word::w#2 [ print_word::w#2 print_byte::b#0 char_cursor#19 ] ( main:2::mul_tables_compare:9::print_word:19 [ mul_tables_compare::kc_sqr#2 print_word::w#2 print_byte::b#0 char_cursor#19 ] main:2::mul_tables_compare:9::print_word:23 [ print_word::w#2 print_byte::b#0 char_cursor#19 ] ) -- vbuxx=_hi_vwuz1 - lda w+1 - tax - //SEG68 [31] call print_byte param-assignment [ char_cursor#10 print_word::w#2 ] ( main:2::mul_tables_compare:9::print_word:19 [ mul_tables_compare::kc_sqr#2 char_cursor#10 print_word::w#2 ] main:2::mul_tables_compare:9::print_word:23 [ char_cursor#10 print_word::w#2 ] ) - //SEG69 [35] phi from print_word to print_byte [phi:print_word->print_byte] - //SEG70 [35] phi (byte*) char_cursor#39 = (byte*) char_cursor#19 [phi:print_word->print_byte#0] -- register_copy - //SEG71 [35] phi (byte) print_byte::b#2 = (byte) print_byte::b#0 [phi:print_word->print_byte#1] -- register_copy - jsr print_byte - //SEG72 print_word::@1 - //SEG73 [32] (byte) print_byte::b#1 ← < (word) print_word::w#2 [ char_cursor#10 print_byte::b#1 ] ( main:2::mul_tables_compare:9::print_word:19 [ mul_tables_compare::kc_sqr#2 char_cursor#10 print_byte::b#1 ] main:2::mul_tables_compare:9::print_word:23 [ char_cursor#10 print_byte::b#1 ] ) -- vbuxx=_lo_vwuz1 - lda w - tax - //SEG74 [33] call print_byte param-assignment [ char_cursor#10 ] ( main:2::mul_tables_compare:9::print_word:19 [ mul_tables_compare::kc_sqr#2 char_cursor#10 ] main:2::mul_tables_compare:9::print_word:23 [ char_cursor#10 ] ) - //SEG75 [35] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] - //SEG76 [35] phi (byte*) char_cursor#39 = (byte*) char_cursor#10 [phi:print_word::@1->print_byte#0] -- register_copy - //SEG77 [35] phi (byte) print_byte::b#2 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#1] -- register_copy - jsr print_byte - //SEG78 print_word::@return - //SEG79 [34] return [ char_cursor#10 ] ( main:2::mul_tables_compare:9::print_word:19 [ mul_tables_compare::kc_sqr#2 char_cursor#10 ] main:2::mul_tables_compare:9::print_word:23 [ char_cursor#10 ] ) - rts -} -//SEG80 print_byte -print_byte: { - //SEG81 [36] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word) 4 [ print_byte::b#2 char_cursor#39 print_byte::$0 ] ( main:2::mul_tables_compare:9::print_word:19::print_byte:31 [ mul_tables_compare::kc_sqr#2 print_word::w#2 print_byte::b#2 char_cursor#39 print_byte::$0 ] main:2::mul_tables_compare:9::print_word:23::print_byte:31 [ print_word::w#2 print_byte::b#2 char_cursor#39 print_byte::$0 ] main:2::mul_tables_compare:9::print_word:19::print_byte:33 [ mul_tables_compare::kc_sqr#2 print_byte::b#2 char_cursor#39 print_byte::$0 ] main:2::mul_tables_compare:9::print_word:23::print_byte:33 [ print_byte::b#2 char_cursor#39 print_byte::$0 ] ) -- vbuyy=vbuxx_ror_4 - txa - lsr - lsr - lsr - lsr - tay - //SEG82 [37] (byte) print_char::ch#0 ← *((const byte[]) print_byte::hextab#0 + (byte~) print_byte::$0) [ print_byte::b#2 char_cursor#39 print_char::ch#0 ] ( main:2::mul_tables_compare:9::print_word:19::print_byte:31 [ mul_tables_compare::kc_sqr#2 print_word::w#2 print_byte::b#2 char_cursor#39 print_char::ch#0 ] main:2::mul_tables_compare:9::print_word:23::print_byte:31 [ print_word::w#2 print_byte::b#2 char_cursor#39 print_char::ch#0 ] main:2::mul_tables_compare:9::print_word:19::print_byte:33 [ mul_tables_compare::kc_sqr#2 print_byte::b#2 char_cursor#39 print_char::ch#0 ] main:2::mul_tables_compare:9::print_word:23::print_byte:33 [ print_byte::b#2 char_cursor#39 print_char::ch#0 ] ) -- vbuaa=pbuc1_derefidx_vbuyy - lda hextab,y - //SEG83 [38] call print_char param-assignment [ char_cursor#10 print_byte::b#2 ] ( main:2::mul_tables_compare:9::print_word:19::print_byte:31 [ mul_tables_compare::kc_sqr#2 print_word::w#2 char_cursor#10 print_byte::b#2 ] main:2::mul_tables_compare:9::print_word:23::print_byte:31 [ print_word::w#2 char_cursor#10 print_byte::b#2 ] main:2::mul_tables_compare:9::print_word:19::print_byte:33 [ mul_tables_compare::kc_sqr#2 char_cursor#10 print_byte::b#2 ] main:2::mul_tables_compare:9::print_word:23::print_byte:33 [ char_cursor#10 print_byte::b#2 ] ) - //SEG84 [43] phi from print_byte to print_char [phi:print_byte->print_char] - //SEG85 [43] phi (byte*) char_cursor#27 = (byte*) char_cursor#39 [phi:print_byte->print_char#0] -- register_copy - //SEG86 [43] phi (byte) print_char::ch#2 = (byte) print_char::ch#0 [phi:print_byte->print_char#1] -- register_copy - jsr print_char - //SEG87 print_byte::@1 - //SEG88 [39] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word) 15 [ char_cursor#10 print_byte::$2 ] ( main:2::mul_tables_compare:9::print_word:19::print_byte:31 [ mul_tables_compare::kc_sqr#2 print_word::w#2 char_cursor#10 print_byte::$2 ] main:2::mul_tables_compare:9::print_word:23::print_byte:31 [ print_word::w#2 char_cursor#10 print_byte::$2 ] main:2::mul_tables_compare:9::print_word:19::print_byte:33 [ mul_tables_compare::kc_sqr#2 char_cursor#10 print_byte::$2 ] main:2::mul_tables_compare:9::print_word:23::print_byte:33 [ char_cursor#10 print_byte::$2 ] ) -- vbuaa=vbuxx_band_vbuc1 - txa - and #$f - //SEG89 [40] (byte) print_char::ch#1 ← *((const byte[]) print_byte::hextab#0 + (byte~) print_byte::$2) [ char_cursor#10 print_char::ch#1 ] ( main:2::mul_tables_compare:9::print_word:19::print_byte:31 [ mul_tables_compare::kc_sqr#2 print_word::w#2 char_cursor#10 print_char::ch#1 ] main:2::mul_tables_compare:9::print_word:23::print_byte:31 [ print_word::w#2 char_cursor#10 print_char::ch#1 ] main:2::mul_tables_compare:9::print_word:19::print_byte:33 [ mul_tables_compare::kc_sqr#2 char_cursor#10 print_char::ch#1 ] main:2::mul_tables_compare:9::print_word:23::print_byte:33 [ char_cursor#10 print_char::ch#1 ] ) -- vbuaa=pbuc1_derefidx_vbuaa - tax - lda hextab,x - //SEG90 [41] call print_char param-assignment [ char_cursor#10 ] ( main:2::mul_tables_compare:9::print_word:19::print_byte:31 [ mul_tables_compare::kc_sqr#2 print_word::w#2 char_cursor#10 ] main:2::mul_tables_compare:9::print_word:23::print_byte:31 [ print_word::w#2 char_cursor#10 ] main:2::mul_tables_compare:9::print_word:19::print_byte:33 [ mul_tables_compare::kc_sqr#2 char_cursor#10 ] main:2::mul_tables_compare:9::print_word:23::print_byte:33 [ char_cursor#10 ] ) - //SEG91 [43] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] - //SEG92 [43] phi (byte*) char_cursor#27 = (byte*) char_cursor#10 [phi:print_byte::@1->print_char#0] -- register_copy - //SEG93 [43] phi (byte) print_char::ch#2 = (byte) print_char::ch#1 [phi:print_byte::@1->print_char#1] -- register_copy - jsr print_char - //SEG94 print_byte::@return - //SEG95 [42] return [ char_cursor#10 ] ( main:2::mul_tables_compare:9::print_word:19::print_byte:31 [ mul_tables_compare::kc_sqr#2 print_word::w#2 char_cursor#10 ] main:2::mul_tables_compare:9::print_word:23::print_byte:31 [ print_word::w#2 char_cursor#10 ] main:2::mul_tables_compare:9::print_word:19::print_byte:33 [ mul_tables_compare::kc_sqr#2 char_cursor#10 ] main:2::mul_tables_compare:9::print_word:23::print_byte:33 [ char_cursor#10 ] ) - rts - hextab: .byte '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' -} -//SEG96 print_char -print_char: { - //SEG97 [44] *((byte*) char_cursor#27) ← (byte) print_char::ch#2 [ char_cursor#27 ] ( main:2::mul_tables_compare:9::print_word:19::print_byte:31::print_char:38 [ mul_tables_compare::kc_sqr#2 print_word::w#2 print_byte::b#2 char_cursor#27 ] main:2::mul_tables_compare:9::print_word:23::print_byte:31::print_char:38 [ print_word::w#2 print_byte::b#2 char_cursor#27 ] main:2::mul_tables_compare:9::print_word:19::print_byte:33::print_char:38 [ mul_tables_compare::kc_sqr#2 print_byte::b#2 char_cursor#27 ] main:2::mul_tables_compare:9::print_word:23::print_byte:33::print_char:38 [ print_byte::b#2 char_cursor#27 ] main:2::mul_tables_compare:9::print_word:19::print_byte:31::print_char:41 [ mul_tables_compare::kc_sqr#2 print_word::w#2 char_cursor#27 ] main:2::mul_tables_compare:9::print_word:23::print_byte:31::print_char:41 [ print_word::w#2 char_cursor#27 ] main:2::mul_tables_compare:9::print_word:19::print_byte:33::print_char:41 [ mul_tables_compare::kc_sqr#2 char_cursor#27 ] main:2::mul_tables_compare:9::print_word:23::print_byte:33::print_char:41 [ char_cursor#27 ] ) -- _deref_pbuz1=vbuaa - ldy #0 - sta (char_cursor),y - //SEG98 [45] (byte*) char_cursor#10 ← ++ (byte*) char_cursor#27 [ char_cursor#10 ] ( main:2::mul_tables_compare:9::print_word:19::print_byte:31::print_char:38 [ mul_tables_compare::kc_sqr#2 print_word::w#2 print_byte::b#2 char_cursor#10 ] main:2::mul_tables_compare:9::print_word:23::print_byte:31::print_char:38 [ print_word::w#2 print_byte::b#2 char_cursor#10 ] main:2::mul_tables_compare:9::print_word:19::print_byte:33::print_char:38 [ mul_tables_compare::kc_sqr#2 print_byte::b#2 char_cursor#10 ] main:2::mul_tables_compare:9::print_word:23::print_byte:33::print_char:38 [ print_byte::b#2 char_cursor#10 ] main:2::mul_tables_compare:9::print_word:19::print_byte:31::print_char:41 [ mul_tables_compare::kc_sqr#2 print_word::w#2 char_cursor#10 ] main:2::mul_tables_compare:9::print_word:23::print_byte:31::print_char:41 [ print_word::w#2 char_cursor#10 ] main:2::mul_tables_compare:9::print_word:19::print_byte:33::print_char:41 [ mul_tables_compare::kc_sqr#2 char_cursor#10 ] main:2::mul_tables_compare:9::print_word:23::print_byte:33::print_char:41 [ char_cursor#10 ] ) -- pbuz1=_inc_pbuz1 - inc char_cursor - bne !+ - inc char_cursor+1 - !: - //SEG99 print_char::@return - //SEG100 [46] return [ char_cursor#10 ] ( main:2::mul_tables_compare:9::print_word:19::print_byte:31::print_char:38 [ mul_tables_compare::kc_sqr#2 print_word::w#2 print_byte::b#2 char_cursor#10 ] main:2::mul_tables_compare:9::print_word:23::print_byte:31::print_char:38 [ print_word::w#2 print_byte::b#2 char_cursor#10 ] main:2::mul_tables_compare:9::print_word:19::print_byte:33::print_char:38 [ mul_tables_compare::kc_sqr#2 print_byte::b#2 char_cursor#10 ] main:2::mul_tables_compare:9::print_word:23::print_byte:33::print_char:38 [ print_byte::b#2 char_cursor#10 ] main:2::mul_tables_compare:9::print_word:19::print_byte:31::print_char:41 [ mul_tables_compare::kc_sqr#2 print_word::w#2 char_cursor#10 ] main:2::mul_tables_compare:9::print_word:23::print_byte:31::print_char:41 [ print_word::w#2 char_cursor#10 ] main:2::mul_tables_compare:9::print_word:19::print_byte:33::print_char:41 [ mul_tables_compare::kc_sqr#2 char_cursor#10 ] main:2::mul_tables_compare:9::print_word:23::print_byte:33::print_char:41 [ char_cursor#10 ] ) - rts -} -//SEG101 print_str -print_str: { - .label str = 8 - //SEG102 [48] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] - //SEG103 [48] phi (byte*) char_cursor#19 = (byte*) char_cursor#44 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy - //SEG104 [48] phi (byte*) print_str::str#3 = (byte*) print_str::str#5 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy - //SEG105 print_str::@1 - b1: - //SEG106 [49] if(*((byte*) print_str::str#3)!=(byte) '@') goto print_str::@2 [ char_cursor#19 print_str::str#3 ] ( main:2::mul_tables_compare:9::print_str:17 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 char_cursor#19 print_str::str#3 ] main:2::mul_tables_compare:9::print_str:21 [ mul_tables_compare::kc_sqr#2 char_cursor#19 print_str::str#3 ] ) -- _deref_pbuz1_neq_vbuc1_then_la1 - ldy #0 - lda (str),y - cmp #'@' - bne b2 - //SEG107 print_str::@return - //SEG108 [50] return [ char_cursor#19 ] ( main:2::mul_tables_compare:9::print_str:17 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 char_cursor#19 ] main:2::mul_tables_compare:9::print_str:21 [ mul_tables_compare::kc_sqr#2 char_cursor#19 ] ) - rts - //SEG109 print_str::@2 - b2: - //SEG110 [51] *((byte*) char_cursor#19) ← *((byte*) print_str::str#3) [ char_cursor#19 print_str::str#3 ] ( main:2::mul_tables_compare:9::print_str:17 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 char_cursor#19 print_str::str#3 ] main:2::mul_tables_compare:9::print_str:21 [ mul_tables_compare::kc_sqr#2 char_cursor#19 print_str::str#3 ] ) -- _deref_pbuz1=_deref_pbuz2 - ldy #0 - lda (str),y - sta (char_cursor),y - //SEG111 [52] (byte*) char_cursor#1 ← ++ (byte*) char_cursor#19 [ print_str::str#3 char_cursor#1 ] ( main:2::mul_tables_compare:9::print_str:17 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 print_str::str#3 char_cursor#1 ] main:2::mul_tables_compare:9::print_str:21 [ mul_tables_compare::kc_sqr#2 print_str::str#3 char_cursor#1 ] ) -- pbuz1=_inc_pbuz1 - inc char_cursor - bne !+ - inc char_cursor+1 - !: - //SEG112 [53] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#3 [ print_str::str#0 char_cursor#1 ] ( main:2::mul_tables_compare:9::print_str:17 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 print_str::str#0 char_cursor#1 ] main:2::mul_tables_compare:9::print_str:21 [ mul_tables_compare::kc_sqr#2 print_str::str#0 char_cursor#1 ] ) -- pbuz1=_inc_pbuz1 - inc str - bne !+ - inc str+1 - !: - jmp b1 -} -//SEG113 print_cls -print_cls: { - .label sc = 6 - //SEG114 [55] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] - //SEG115 [55] phi (byte*) print_cls::sc#2 = ((byte*))(word/signed word) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG224 [53] phi (byte*) print_str::str#9 = (const string) mul_tables_compare::str2 [phi:mul_tables_compare::@5->print_str#1] -- pbuz1=pbuc1 + lda #str2 + sta print_str.str+1 + jsr print_str + //SEG225 [108] phi from mul_tables_compare::@5 to mul_tables_compare::@10 [phi:mul_tables_compare::@5->mul_tables_compare::@10] + //SEG226 mul_tables_compare::@10 + //SEG227 [109] call print_ln param-assignment [ line_cursor#1 ] ( main:2::mul_tables_compare:11 [ line_cursor#1 ] ) + //SEG228 [48] phi from mul_tables_compare::@10 to print_ln [phi:mul_tables_compare::@10->print_ln] + //SEG229 [48] phi (byte*) line_cursor#22 = ((byte*))(word/signed word) 1024 [phi:mul_tables_compare::@10->print_ln#0] -- pbuz1=pbuc1 lda #<$400 - sta sc + sta line_cursor lda #>$400 - sta sc+1 - //SEG116 [55] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] - //SEG117 [55] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy - //SEG118 print_cls::@1 - b1: - //SEG119 [56] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::mul_tables_compare:9::print_cls:15 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 print_cls::sc#2 ] ) -- _deref_pbuz1=vbuc1 - ldy #0 - lda #' ' - sta (sc),y - //SEG120 [57] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 [ print_cls::sc#1 ] ( main:2::mul_tables_compare:9::print_cls:15 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 print_cls::sc#1 ] ) -- pbuz1=_inc_pbuz1 - inc sc - bne !+ - inc sc+1 - !: - //SEG121 [58] if((byte*) print_cls::sc#1!=(word/signed word) 1024+(word/signed word) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::mul_tables_compare:9::print_cls:15 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 print_cls::sc#1 ] ) -- pbuz1_neq_vwuc1_then_la1 - lda sc+1 - cmp #>$400+$3e8 - bne b1 - lda sc - cmp #<$400+$3e8 - bne b1 - //SEG122 print_cls::@return - //SEG123 [59] return [ ] ( main:2::mul_tables_compare:9::print_cls:15 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::asm_sqr#2 ] ) - rts + sta line_cursor+1 + jsr print_ln + //SEG230 [110] (byte*~) char_cursor#100 ← (byte*) line_cursor#1 [ line_cursor#1 char_cursor#100 ] ( main:2::mul_tables_compare:11 [ line_cursor#1 char_cursor#100 ] ) -- pbuz1=pbuz2 + lda line_cursor + sta char_cursor + lda line_cursor+1 + sta char_cursor+1 + //SEG231 [101] phi from mul_tables_compare::@10 to mul_tables_compare::@return [phi:mul_tables_compare::@10->mul_tables_compare::@return] + //SEG232 [101] phi (byte*) line_cursor#17 = (byte*) line_cursor#1 [phi:mul_tables_compare::@10->mul_tables_compare::@return#0] -- register_copy + //SEG233 [101] phi (byte*) char_cursor#20 = (byte*~) char_cursor#100 [phi:mul_tables_compare::@10->mul_tables_compare::@return#1] -- register_copy + jmp breturn + str: .text "multiply table mismatch at @" + str1: .text " / @" + str2: .text "multiply tables match!@" } -//SEG124 init_mul_tables_asm +//SEG234 init_mul_tables_asm init_mul_tables_asm: { .const mem = $ff - //SEG125 asm { ldx#$00txa.byte$c9lb1:tyaadc#$00ml1:staasm_mul_sqr1_hi,xtaycmp#$40txarorml9:adc#$00staml9+1inxml0:staasm_mul_sqr1_lo,xbnelb1incml0+2incml1+2clcinybnelb1ldx#$00ldy#$ff!:ldaasm_mul_sqr1_hi+1,xstaasm_mul_sqr2_hi+$100,xldaasm_mul_sqr1_hi,xstaasm_mul_sqr2_hi,yldaasm_mul_sqr1_lo+1,xstaasm_mul_sqr2_lo+$100,xldaasm_mul_sqr1_lo,xstaasm_mul_sqr2_lo,ydeyinxbne!- } + //SEG235 asm { ldx#$00txa.byte$c9lb1:tyaadc#$00ml1:staasm_mul_sqr1_hi,xtaycmp#$40txarorml9:adc#$00staml9+1inxml0:staasm_mul_sqr1_lo,xbnelb1incml0+2incml1+2clcinybnelb1ldx#$00ldy#$ff!:ldaasm_mul_sqr1_hi+1,xstaasm_mul_sqr2_hi+$100,xldaasm_mul_sqr1_hi,xstaasm_mul_sqr2_hi,yldaasm_mul_sqr1_lo+1,xstaasm_mul_sqr2_lo+$100,xldaasm_mul_sqr1_lo,xstaasm_mul_sqr2_lo,ydeyinxbne!- } ldx #0 txa .byte $c9 @@ -4238,95 +6894,95 @@ init_mul_tables_asm: { dey inx bne !- - //SEG126 [61] *((const byte*) init_mul_tables_asm::mem#0) ← *((const byte[512]) asm_mul_sqr1_lo#0) [ ] ( main:2::init_mul_tables_asm:7 [ ] ) -- _deref_pbuc1=_deref_pbuc2 + //SEG236 [112] *((const byte*) init_mul_tables_asm::mem#0) ← *((const byte[512]) asm_mul_sqr1_lo#0) [ ] ( main:2::init_mul_tables_asm:9 [ ] ) -- _deref_pbuc1=_deref_pbuc2 lda asm_mul_sqr1_lo sta mem - //SEG127 [62] *((const byte*) init_mul_tables_asm::mem#0) ← *((const byte[512]) asm_mul_sqr1_hi#0) [ ] ( main:2::init_mul_tables_asm:7 [ ] ) -- _deref_pbuc1=_deref_pbuc2 + //SEG237 [113] *((const byte*) init_mul_tables_asm::mem#0) ← *((const byte[512]) asm_mul_sqr1_hi#0) [ ] ( main:2::init_mul_tables_asm:9 [ ] ) -- _deref_pbuc1=_deref_pbuc2 lda asm_mul_sqr1_hi sta mem - //SEG128 [63] *((const byte*) init_mul_tables_asm::mem#0) ← *((const byte[512]) asm_mul_sqr2_lo#0) [ ] ( main:2::init_mul_tables_asm:7 [ ] ) -- _deref_pbuc1=_deref_pbuc2 + //SEG238 [114] *((const byte*) init_mul_tables_asm::mem#0) ← *((const byte[512]) asm_mul_sqr2_lo#0) [ ] ( main:2::init_mul_tables_asm:9 [ ] ) -- _deref_pbuc1=_deref_pbuc2 lda asm_mul_sqr2_lo sta mem - //SEG129 [64] *((const byte*) init_mul_tables_asm::mem#0) ← *((const byte[512]) asm_mul_sqr2_hi#0) [ ] ( main:2::init_mul_tables_asm:7 [ ] ) -- _deref_pbuc1=_deref_pbuc2 + //SEG239 [115] *((const byte*) init_mul_tables_asm::mem#0) ← *((const byte[512]) asm_mul_sqr2_hi#0) [ ] ( main:2::init_mul_tables_asm:9 [ ] ) -- _deref_pbuc1=_deref_pbuc2 lda asm_mul_sqr2_hi sta mem - //SEG130 init_mul_tables_asm::@return - //SEG131 [65] return [ ] ( main:2::init_mul_tables_asm:7 [ ] ) + //SEG240 init_mul_tables_asm::@return + //SEG241 [116] return [ ] ( main:2::init_mul_tables_asm:9 [ ] ) rts } -//SEG132 init_mul_tables +//SEG242 init_mul_tables init_mul_tables: { - .label sqr1_hi = 4 - .label sqr = 6 - .label sqr1_lo = 2 - .label x_2 = $a - .label sqr2_hi = 4 - .label sqr2_lo = 2 - .label dir = $a - //SEG133 [67] phi from init_mul_tables to init_mul_tables::@1 [phi:init_mul_tables->init_mul_tables::@1] - //SEG134 [67] phi (byte) init_mul_tables::x_2#3 = (byte/signed byte/word/signed word) 0 [phi:init_mul_tables->init_mul_tables::@1#0] -- vbuz1=vbuc1 + .label sqr1_hi = 6 + .label sqr = 8 + .label sqr1_lo = 4 + .label x_2 = 2 + .label sqr2_hi = 6 + .label sqr2_lo = 4 + .label dir = 2 + //SEG243 [118] phi from init_mul_tables to init_mul_tables::@1 [phi:init_mul_tables->init_mul_tables::@1] + //SEG244 [118] phi (byte) init_mul_tables::x_2#3 = (byte/signed byte/word/signed word) 0 [phi:init_mul_tables->init_mul_tables::@1#0] -- vbuz1=vbuc1 lda #0 sta x_2 - //SEG135 [67] phi (byte*) init_mul_tables::sqr1_hi#2 = (const byte[512]) mul_sqr1_hi#0+(byte/signed byte/word/signed word) 1 [phi:init_mul_tables->init_mul_tables::@1#1] -- pbuz1=pbuc1 + //SEG245 [118] phi (byte*) init_mul_tables::sqr1_hi#2 = (const byte[512]) mul_sqr1_hi#0+(byte/signed byte/word/signed word) 1 [phi:init_mul_tables->init_mul_tables::@1#1] -- pbuz1=pbuc1 lda #mul_sqr1_hi+1 sta sqr1_hi+1 - //SEG136 [67] phi (byte*) init_mul_tables::sqr1_lo#2 = (const byte[512]) mul_sqr1_lo#0+(byte/signed byte/word/signed word) 1 [phi:init_mul_tables->init_mul_tables::@1#2] -- pbuz1=pbuc1 + //SEG246 [118] phi (byte*) init_mul_tables::sqr1_lo#2 = (const byte[512]) mul_sqr1_lo#0+(byte/signed byte/word/signed word) 1 [phi:init_mul_tables->init_mul_tables::@1#2] -- pbuz1=pbuc1 lda #mul_sqr1_lo+1 sta sqr1_lo+1 - //SEG137 [67] phi (word) init_mul_tables::sqr#4 = (byte/signed byte/word/signed word) 0 [phi:init_mul_tables->init_mul_tables::@1#3] -- vwuz1=vbuc1 + //SEG247 [118] phi (word) init_mul_tables::sqr#4 = (byte/signed byte/word/signed word) 0 [phi:init_mul_tables->init_mul_tables::@1#3] -- vwuz1=vbuc1 lda #0 sta sqr sta sqr+1 - //SEG138 [67] phi (byte) init_mul_tables::c#2 = (byte/signed byte/word/signed word) 0 [phi:init_mul_tables->init_mul_tables::@1#4] -- vbuxx=vbuc1 + //SEG248 [118] phi (byte) init_mul_tables::c#2 = (byte/signed byte/word/signed word) 0 [phi:init_mul_tables->init_mul_tables::@1#4] -- vbuxx=vbuc1 tax - //SEG139 [67] phi from init_mul_tables::@2 to init_mul_tables::@1 [phi:init_mul_tables::@2->init_mul_tables::@1] - //SEG140 [67] phi (byte) init_mul_tables::x_2#3 = (byte) init_mul_tables::x_2#2 [phi:init_mul_tables::@2->init_mul_tables::@1#0] -- register_copy - //SEG141 [67] phi (byte*) init_mul_tables::sqr1_hi#2 = (byte*) init_mul_tables::sqr1_hi#1 [phi:init_mul_tables::@2->init_mul_tables::@1#1] -- register_copy - //SEG142 [67] phi (byte*) init_mul_tables::sqr1_lo#2 = (byte*) init_mul_tables::sqr1_lo#1 [phi:init_mul_tables::@2->init_mul_tables::@1#2] -- register_copy - //SEG143 [67] phi (word) init_mul_tables::sqr#4 = (word) init_mul_tables::sqr#1 [phi:init_mul_tables::@2->init_mul_tables::@1#3] -- register_copy - //SEG144 [67] phi (byte) init_mul_tables::c#2 = (byte) init_mul_tables::c#1 [phi:init_mul_tables::@2->init_mul_tables::@1#4] -- register_copy - //SEG145 init_mul_tables::@1 + //SEG249 [118] phi from init_mul_tables::@2 to init_mul_tables::@1 [phi:init_mul_tables::@2->init_mul_tables::@1] + //SEG250 [118] phi (byte) init_mul_tables::x_2#3 = (byte) init_mul_tables::x_2#2 [phi:init_mul_tables::@2->init_mul_tables::@1#0] -- register_copy + //SEG251 [118] phi (byte*) init_mul_tables::sqr1_hi#2 = (byte*) init_mul_tables::sqr1_hi#1 [phi:init_mul_tables::@2->init_mul_tables::@1#1] -- register_copy + //SEG252 [118] phi (byte*) init_mul_tables::sqr1_lo#2 = (byte*) init_mul_tables::sqr1_lo#1 [phi:init_mul_tables::@2->init_mul_tables::@1#2] -- register_copy + //SEG253 [118] phi (word) init_mul_tables::sqr#4 = (word) init_mul_tables::sqr#1 [phi:init_mul_tables::@2->init_mul_tables::@1#3] -- register_copy + //SEG254 [118] phi (byte) init_mul_tables::c#2 = (byte) init_mul_tables::c#1 [phi:init_mul_tables::@2->init_mul_tables::@1#4] -- register_copy + //SEG255 init_mul_tables::@1 b1: - //SEG146 [68] (byte) init_mul_tables::c#1 ← ++ (byte) init_mul_tables::c#2 [ init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::x_2#3 init_mul_tables::c#1 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::x_2#3 init_mul_tables::c#1 ] ) -- vbuxx=_inc_vbuxx + //SEG256 [119] (byte) init_mul_tables::c#1 ← ++ (byte) init_mul_tables::c#2 [ init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::x_2#3 init_mul_tables::c#1 ] ( main:2::init_mul_tables:7 [ init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::x_2#3 init_mul_tables::c#1 ] ) -- vbuxx=_inc_vbuxx inx - //SEG147 [69] (byte~) init_mul_tables::$2 ← (byte) init_mul_tables::c#1 & (byte/signed byte/word/signed word) 1 [ init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::x_2#3 init_mul_tables::c#1 init_mul_tables::$2 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::x_2#3 init_mul_tables::c#1 init_mul_tables::$2 ] ) -- vbuaa=vbuxx_band_vbuc1 + //SEG257 [120] (byte~) init_mul_tables::$2 ← (byte) init_mul_tables::c#1 & (byte/signed byte/word/signed word) 1 [ init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::x_2#3 init_mul_tables::c#1 init_mul_tables::$2 ] ( main:2::init_mul_tables:7 [ init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::x_2#3 init_mul_tables::c#1 init_mul_tables::$2 ] ) -- vbuaa=vbuxx_band_vbuc1 txa and #1 - //SEG148 [70] if((byte~) init_mul_tables::$2!=(byte/signed byte/word/signed word) 0) goto init_mul_tables::@2 [ init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::x_2#3 init_mul_tables::c#1 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::x_2#3 init_mul_tables::c#1 ] ) -- vbuaa_neq_0_then_la1 + //SEG258 [121] if((byte~) init_mul_tables::$2!=(byte/signed byte/word/signed word) 0) goto init_mul_tables::@2 [ init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::x_2#3 init_mul_tables::c#1 ] ( main:2::init_mul_tables:7 [ init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::x_2#3 init_mul_tables::c#1 ] ) -- vbuaa_neq_0_then_la1 cmp #0 bne b2 - //SEG149 init_mul_tables::@5 - //SEG150 [71] (byte) init_mul_tables::x_2#1 ← ++ (byte) init_mul_tables::x_2#3 [ init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#1 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#1 ] ) -- vbuz1=_inc_vbuz1 + //SEG259 init_mul_tables::@5 + //SEG260 [122] (byte) init_mul_tables::x_2#1 ← ++ (byte) init_mul_tables::x_2#3 [ init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#1 ] ( main:2::init_mul_tables:7 [ init_mul_tables::sqr#4 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#1 ] ) -- vbuz1=_inc_vbuz1 inc x_2 - //SEG151 [72] (word) init_mul_tables::sqr#2 ← ++ (word) init_mul_tables::sqr#4 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#1 init_mul_tables::sqr#2 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#1 init_mul_tables::sqr#2 ] ) -- vwuz1=_inc_vwuz1 + //SEG261 [123] (word) init_mul_tables::sqr#2 ← ++ (word) init_mul_tables::sqr#4 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#1 init_mul_tables::sqr#2 ] ( main:2::init_mul_tables:7 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#1 init_mul_tables::sqr#2 ] ) -- vwuz1=_inc_vwuz1 inc sqr bne !+ inc sqr+1 !: - //SEG152 [73] phi from init_mul_tables::@1 init_mul_tables::@5 to init_mul_tables::@2 [phi:init_mul_tables::@1/init_mul_tables::@5->init_mul_tables::@2] - //SEG153 [73] phi (byte) init_mul_tables::x_2#2 = (byte) init_mul_tables::x_2#3 [phi:init_mul_tables::@1/init_mul_tables::@5->init_mul_tables::@2#0] -- register_copy - //SEG154 [73] phi (word) init_mul_tables::sqr#3 = (word) init_mul_tables::sqr#4 [phi:init_mul_tables::@1/init_mul_tables::@5->init_mul_tables::@2#1] -- register_copy - //SEG155 init_mul_tables::@2 + //SEG262 [124] phi from init_mul_tables::@1 init_mul_tables::@5 to init_mul_tables::@2 [phi:init_mul_tables::@1/init_mul_tables::@5->init_mul_tables::@2] + //SEG263 [124] phi (byte) init_mul_tables::x_2#2 = (byte) init_mul_tables::x_2#3 [phi:init_mul_tables::@1/init_mul_tables::@5->init_mul_tables::@2#0] -- register_copy + //SEG264 [124] phi (word) init_mul_tables::sqr#3 = (word) init_mul_tables::sqr#4 [phi:init_mul_tables::@1/init_mul_tables::@5->init_mul_tables::@2#1] -- register_copy + //SEG265 init_mul_tables::@2 b2: - //SEG156 [74] (byte~) init_mul_tables::$5 ← < (word) init_mul_tables::sqr#3 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 init_mul_tables::$5 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 init_mul_tables::$5 ] ) -- vbuaa=_lo_vwuz1 + //SEG266 [125] (byte~) init_mul_tables::$5 ← < (word) init_mul_tables::sqr#3 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 init_mul_tables::$5 ] ( main:2::init_mul_tables:7 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 init_mul_tables::$5 ] ) -- vbuaa=_lo_vwuz1 lda sqr - //SEG157 [75] *((byte*) init_mul_tables::sqr1_lo#2) ← (byte~) init_mul_tables::$5 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 ] ) -- _deref_pbuz1=vbuaa + //SEG267 [126] *((byte*) init_mul_tables::sqr1_lo#2) ← (byte~) init_mul_tables::$5 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 ] ( main:2::init_mul_tables:7 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 ] ) -- _deref_pbuz1=vbuaa ldy #0 sta (sqr1_lo),y - //SEG158 [76] (byte~) init_mul_tables::$6 ← > (word) init_mul_tables::sqr#3 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 init_mul_tables::$6 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 init_mul_tables::$6 ] ) -- vbuaa=_hi_vwuz1 + //SEG268 [127] (byte~) init_mul_tables::$6 ← > (word) init_mul_tables::sqr#3 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 init_mul_tables::$6 ] ( main:2::init_mul_tables:7 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 init_mul_tables::$6 ] ) -- vbuaa=_hi_vwuz1 lda sqr+1 - //SEG159 [77] *((byte*) init_mul_tables::sqr1_hi#2) ← (byte~) init_mul_tables::$6 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 ] ) -- _deref_pbuz1=vbuaa + //SEG269 [128] *((byte*) init_mul_tables::sqr1_hi#2) ← (byte~) init_mul_tables::$6 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 ] ( main:2::init_mul_tables:7 [ init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 ] ) -- _deref_pbuz1=vbuaa sta (sqr1_hi),y - //SEG160 [78] (byte*) init_mul_tables::sqr1_hi#1 ← ++ (byte*) init_mul_tables::sqr1_hi#2 [ init_mul_tables::sqr1_lo#2 init_mul_tables::c#1 init_mul_tables::sqr1_hi#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr1_lo#2 init_mul_tables::c#1 init_mul_tables::sqr1_hi#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 ] ) -- pbuz1=_inc_pbuz1 + //SEG270 [129] (byte*) init_mul_tables::sqr1_hi#1 ← ++ (byte*) init_mul_tables::sqr1_hi#2 [ init_mul_tables::sqr1_lo#2 init_mul_tables::c#1 init_mul_tables::sqr1_hi#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 ] ( main:2::init_mul_tables:7 [ init_mul_tables::sqr1_lo#2 init_mul_tables::c#1 init_mul_tables::sqr1_hi#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 ] ) -- pbuz1=_inc_pbuz1 inc sqr1_hi bne !+ inc sqr1_hi+1 !: - //SEG161 [79] (word) init_mul_tables::sqr#1 ← (word) init_mul_tables::sqr#3 + (byte) init_mul_tables::x_2#2 [ init_mul_tables::sqr1_lo#2 init_mul_tables::c#1 init_mul_tables::sqr#1 init_mul_tables::sqr1_hi#1 init_mul_tables::x_2#2 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr1_lo#2 init_mul_tables::c#1 init_mul_tables::sqr#1 init_mul_tables::sqr1_hi#1 init_mul_tables::x_2#2 ] ) -- vwuz1=vwuz1_plus_vbuz2 + //SEG271 [130] (word) init_mul_tables::sqr#1 ← (word) init_mul_tables::sqr#3 + (byte) init_mul_tables::x_2#2 [ init_mul_tables::sqr1_lo#2 init_mul_tables::c#1 init_mul_tables::sqr#1 init_mul_tables::sqr1_hi#1 init_mul_tables::x_2#2 ] ( main:2::init_mul_tables:7 [ init_mul_tables::sqr1_lo#2 init_mul_tables::c#1 init_mul_tables::sqr#1 init_mul_tables::sqr1_hi#1 init_mul_tables::x_2#2 ] ) -- vwuz1=vwuz1_plus_vbuz2 lda x_2 clc adc sqr @@ -4334,93 +6990,126 @@ init_mul_tables: { bcc !+ inc sqr+1 !: - //SEG162 [80] (byte*) init_mul_tables::sqr1_lo#1 ← ++ (byte*) init_mul_tables::sqr1_lo#2 [ init_mul_tables::c#1 init_mul_tables::sqr#1 init_mul_tables::sqr1_lo#1 init_mul_tables::sqr1_hi#1 init_mul_tables::x_2#2 ] ( main:2::init_mul_tables:5 [ init_mul_tables::c#1 init_mul_tables::sqr#1 init_mul_tables::sqr1_lo#1 init_mul_tables::sqr1_hi#1 init_mul_tables::x_2#2 ] ) -- pbuz1=_inc_pbuz1 + //SEG272 [131] (byte*) init_mul_tables::sqr1_lo#1 ← ++ (byte*) init_mul_tables::sqr1_lo#2 [ init_mul_tables::c#1 init_mul_tables::sqr#1 init_mul_tables::sqr1_lo#1 init_mul_tables::sqr1_hi#1 init_mul_tables::x_2#2 ] ( main:2::init_mul_tables:7 [ init_mul_tables::c#1 init_mul_tables::sqr#1 init_mul_tables::sqr1_lo#1 init_mul_tables::sqr1_hi#1 init_mul_tables::x_2#2 ] ) -- pbuz1=_inc_pbuz1 inc sqr1_lo bne !+ inc sqr1_lo+1 !: - //SEG163 [81] if((byte*) init_mul_tables::sqr1_lo#1!=(const byte[512]) mul_sqr1_lo#0+(word/signed word) 512) goto init_mul_tables::@1 [ init_mul_tables::c#1 init_mul_tables::sqr#1 init_mul_tables::sqr1_lo#1 init_mul_tables::sqr1_hi#1 init_mul_tables::x_2#2 ] ( main:2::init_mul_tables:5 [ init_mul_tables::c#1 init_mul_tables::sqr#1 init_mul_tables::sqr1_lo#1 init_mul_tables::sqr1_hi#1 init_mul_tables::x_2#2 ] ) -- pbuz1_neq_pbuc1_then_la1 + //SEG273 [132] if((byte*) init_mul_tables::sqr1_lo#1!=(const byte[512]) mul_sqr1_lo#0+(word/signed word) 512) goto init_mul_tables::@1 [ init_mul_tables::c#1 init_mul_tables::sqr#1 init_mul_tables::sqr1_lo#1 init_mul_tables::sqr1_hi#1 init_mul_tables::x_2#2 ] ( main:2::init_mul_tables:7 [ init_mul_tables::c#1 init_mul_tables::sqr#1 init_mul_tables::sqr1_lo#1 init_mul_tables::sqr1_hi#1 init_mul_tables::x_2#2 ] ) -- pbuz1_neq_pbuc1_then_la1 lda sqr1_lo+1 cmp #>mul_sqr1_lo+$200 bne b1 lda sqr1_lo cmp #init_mul_tables::@3] - //SEG165 [82] phi (byte) init_mul_tables::dir#2 = (byte/word/signed word) 255 [phi:init_mul_tables::@2->init_mul_tables::@3#0] -- vbuz1=vbuc1 + //SEG274 [133] phi from init_mul_tables::@2 to init_mul_tables::@3 [phi:init_mul_tables::@2->init_mul_tables::@3] + //SEG275 [133] phi (byte) init_mul_tables::dir#2 = (byte/word/signed word) 255 [phi:init_mul_tables::@2->init_mul_tables::@3#0] -- vbuz1=vbuc1 lda #$ff sta dir - //SEG166 [82] phi (byte*) init_mul_tables::sqr2_hi#2 = (const byte[512]) mul_sqr2_hi#0 [phi:init_mul_tables::@2->init_mul_tables::@3#1] -- pbuz1=pbuc1 + //SEG276 [133] phi (byte*) init_mul_tables::sqr2_hi#2 = (const byte[512]) mul_sqr2_hi#0 [phi:init_mul_tables::@2->init_mul_tables::@3#1] -- pbuz1=pbuc1 lda #mul_sqr2_hi sta sqr2_hi+1 - //SEG167 [82] phi (byte*) init_mul_tables::sqr2_lo#2 = (const byte[512]) mul_sqr2_lo#0 [phi:init_mul_tables::@2->init_mul_tables::@3#2] -- pbuz1=pbuc1 + //SEG277 [133] phi (byte*) init_mul_tables::sqr2_lo#2 = (const byte[512]) mul_sqr2_lo#0 [phi:init_mul_tables::@2->init_mul_tables::@3#2] -- pbuz1=pbuc1 lda #mul_sqr2_lo sta sqr2_lo+1 - //SEG168 [82] phi (byte) init_mul_tables::x_255#2 = ((byte))-(byte/signed byte/word/signed word) 1 [phi:init_mul_tables::@2->init_mul_tables::@3#3] -- vbuxx=vbuc1 + //SEG278 [133] phi (byte) init_mul_tables::x_255#2 = ((byte))-(byte/signed byte/word/signed word) 1 [phi:init_mul_tables::@2->init_mul_tables::@3#3] -- vbuxx=vbuc1 ldx #-1 - //SEG169 [82] phi from init_mul_tables::@4 to init_mul_tables::@3 [phi:init_mul_tables::@4->init_mul_tables::@3] - //SEG170 [82] phi (byte) init_mul_tables::dir#2 = (byte) init_mul_tables::dir#3 [phi:init_mul_tables::@4->init_mul_tables::@3#0] -- register_copy - //SEG171 [82] phi (byte*) init_mul_tables::sqr2_hi#2 = (byte*) init_mul_tables::sqr2_hi#1 [phi:init_mul_tables::@4->init_mul_tables::@3#1] -- register_copy - //SEG172 [82] phi (byte*) init_mul_tables::sqr2_lo#2 = (byte*) init_mul_tables::sqr2_lo#1 [phi:init_mul_tables::@4->init_mul_tables::@3#2] -- register_copy - //SEG173 [82] phi (byte) init_mul_tables::x_255#2 = (byte) init_mul_tables::x_255#1 [phi:init_mul_tables::@4->init_mul_tables::@3#3] -- register_copy - //SEG174 init_mul_tables::@3 + //SEG279 [133] phi from init_mul_tables::@4 to init_mul_tables::@3 [phi:init_mul_tables::@4->init_mul_tables::@3] + //SEG280 [133] phi (byte) init_mul_tables::dir#2 = (byte) init_mul_tables::dir#3 [phi:init_mul_tables::@4->init_mul_tables::@3#0] -- register_copy + //SEG281 [133] phi (byte*) init_mul_tables::sqr2_hi#2 = (byte*) init_mul_tables::sqr2_hi#1 [phi:init_mul_tables::@4->init_mul_tables::@3#1] -- register_copy + //SEG282 [133] phi (byte*) init_mul_tables::sqr2_lo#2 = (byte*) init_mul_tables::sqr2_lo#1 [phi:init_mul_tables::@4->init_mul_tables::@3#2] -- register_copy + //SEG283 [133] phi (byte) init_mul_tables::x_255#2 = (byte) init_mul_tables::x_255#1 [phi:init_mul_tables::@4->init_mul_tables::@3#3] -- register_copy + //SEG284 init_mul_tables::@3 b3: - //SEG175 [83] *((byte*) init_mul_tables::sqr2_lo#2) ← *((const byte[512]) mul_sqr1_lo#0 + (byte) init_mul_tables::x_255#2) [ init_mul_tables::x_255#2 init_mul_tables::sqr2_lo#2 init_mul_tables::sqr2_hi#2 init_mul_tables::dir#2 ] ( main:2::init_mul_tables:5 [ init_mul_tables::x_255#2 init_mul_tables::sqr2_lo#2 init_mul_tables::sqr2_hi#2 init_mul_tables::dir#2 ] ) -- _deref_pbuz1=pbuc1_derefidx_vbuxx + //SEG285 [134] *((byte*) init_mul_tables::sqr2_lo#2) ← *((const byte[512]) mul_sqr1_lo#0 + (byte) init_mul_tables::x_255#2) [ init_mul_tables::x_255#2 init_mul_tables::sqr2_lo#2 init_mul_tables::sqr2_hi#2 init_mul_tables::dir#2 ] ( main:2::init_mul_tables:7 [ init_mul_tables::x_255#2 init_mul_tables::sqr2_lo#2 init_mul_tables::sqr2_hi#2 init_mul_tables::dir#2 ] ) -- _deref_pbuz1=pbuc1_derefidx_vbuxx lda mul_sqr1_lo,x ldy #0 sta (sqr2_lo),y - //SEG176 [84] *((byte*) init_mul_tables::sqr2_hi#2) ← *((const byte[512]) mul_sqr1_hi#0 + (byte) init_mul_tables::x_255#2) [ init_mul_tables::x_255#2 init_mul_tables::sqr2_lo#2 init_mul_tables::sqr2_hi#2 init_mul_tables::dir#2 ] ( main:2::init_mul_tables:5 [ init_mul_tables::x_255#2 init_mul_tables::sqr2_lo#2 init_mul_tables::sqr2_hi#2 init_mul_tables::dir#2 ] ) -- _deref_pbuz1=pbuc1_derefidx_vbuxx + //SEG286 [135] *((byte*) init_mul_tables::sqr2_hi#2) ← *((const byte[512]) mul_sqr1_hi#0 + (byte) init_mul_tables::x_255#2) [ init_mul_tables::x_255#2 init_mul_tables::sqr2_lo#2 init_mul_tables::sqr2_hi#2 init_mul_tables::dir#2 ] ( main:2::init_mul_tables:7 [ init_mul_tables::x_255#2 init_mul_tables::sqr2_lo#2 init_mul_tables::sqr2_hi#2 init_mul_tables::dir#2 ] ) -- _deref_pbuz1=pbuc1_derefidx_vbuxx lda mul_sqr1_hi,x sta (sqr2_hi),y - //SEG177 [85] (byte*) init_mul_tables::sqr2_hi#1 ← ++ (byte*) init_mul_tables::sqr2_hi#2 [ init_mul_tables::x_255#2 init_mul_tables::sqr2_lo#2 init_mul_tables::dir#2 init_mul_tables::sqr2_hi#1 ] ( main:2::init_mul_tables:5 [ init_mul_tables::x_255#2 init_mul_tables::sqr2_lo#2 init_mul_tables::dir#2 init_mul_tables::sqr2_hi#1 ] ) -- pbuz1=_inc_pbuz1 + //SEG287 [136] (byte*) init_mul_tables::sqr2_hi#1 ← ++ (byte*) init_mul_tables::sqr2_hi#2 [ init_mul_tables::x_255#2 init_mul_tables::sqr2_lo#2 init_mul_tables::dir#2 init_mul_tables::sqr2_hi#1 ] ( main:2::init_mul_tables:7 [ init_mul_tables::x_255#2 init_mul_tables::sqr2_lo#2 init_mul_tables::dir#2 init_mul_tables::sqr2_hi#1 ] ) -- pbuz1=_inc_pbuz1 inc sqr2_hi bne !+ inc sqr2_hi+1 !: - //SEG178 [86] (byte) init_mul_tables::x_255#1 ← (byte) init_mul_tables::x_255#2 + (byte) init_mul_tables::dir#2 [ init_mul_tables::sqr2_lo#2 init_mul_tables::dir#2 init_mul_tables::x_255#1 init_mul_tables::sqr2_hi#1 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr2_lo#2 init_mul_tables::dir#2 init_mul_tables::x_255#1 init_mul_tables::sqr2_hi#1 ] ) -- vbuxx=vbuxx_plus_vbuz1 + //SEG288 [137] (byte) init_mul_tables::x_255#1 ← (byte) init_mul_tables::x_255#2 + (byte) init_mul_tables::dir#2 [ init_mul_tables::sqr2_lo#2 init_mul_tables::dir#2 init_mul_tables::x_255#1 init_mul_tables::sqr2_hi#1 ] ( main:2::init_mul_tables:7 [ init_mul_tables::sqr2_lo#2 init_mul_tables::dir#2 init_mul_tables::x_255#1 init_mul_tables::sqr2_hi#1 ] ) -- vbuxx=vbuxx_plus_vbuz1 txa clc adc dir tax - //SEG179 [87] if((byte) init_mul_tables::x_255#1!=(byte/signed byte/word/signed word) 0) goto init_mul_tables::@12 [ init_mul_tables::sqr2_lo#2 init_mul_tables::dir#2 init_mul_tables::x_255#1 init_mul_tables::sqr2_hi#1 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr2_lo#2 init_mul_tables::dir#2 init_mul_tables::x_255#1 init_mul_tables::sqr2_hi#1 ] ) -- vbuxx_neq_0_then_la1 + //SEG289 [138] if((byte) init_mul_tables::x_255#1!=(byte/signed byte/word/signed word) 0) goto init_mul_tables::@12 [ init_mul_tables::sqr2_lo#2 init_mul_tables::dir#2 init_mul_tables::x_255#1 init_mul_tables::sqr2_hi#1 ] ( main:2::init_mul_tables:7 [ init_mul_tables::sqr2_lo#2 init_mul_tables::dir#2 init_mul_tables::x_255#1 init_mul_tables::sqr2_hi#1 ] ) -- vbuxx_neq_0_then_la1 cpx #0 bne b4 - //SEG180 [88] phi from init_mul_tables::@3 to init_mul_tables::@4 [phi:init_mul_tables::@3->init_mul_tables::@4] - //SEG181 [88] phi (byte) init_mul_tables::dir#3 = (byte/signed byte/word/signed word) 1 [phi:init_mul_tables::@3->init_mul_tables::@4#0] -- vbuz1=vbuc1 + //SEG290 [139] phi from init_mul_tables::@3 to init_mul_tables::@4 [phi:init_mul_tables::@3->init_mul_tables::@4] + //SEG291 [139] phi (byte) init_mul_tables::dir#3 = (byte/signed byte/word/signed word) 1 [phi:init_mul_tables::@3->init_mul_tables::@4#0] -- vbuz1=vbuc1 lda #1 sta dir - //SEG182 init_mul_tables::@4 + //SEG292 init_mul_tables::@4 b4: - //SEG183 [89] (byte*) init_mul_tables::sqr2_lo#1 ← ++ (byte*) init_mul_tables::sqr2_lo#2 [ init_mul_tables::x_255#1 init_mul_tables::sqr2_lo#1 init_mul_tables::sqr2_hi#1 init_mul_tables::dir#3 ] ( main:2::init_mul_tables:5 [ init_mul_tables::x_255#1 init_mul_tables::sqr2_lo#1 init_mul_tables::sqr2_hi#1 init_mul_tables::dir#3 ] ) -- pbuz1=_inc_pbuz1 + //SEG293 [140] (byte*) init_mul_tables::sqr2_lo#1 ← ++ (byte*) init_mul_tables::sqr2_lo#2 [ init_mul_tables::x_255#1 init_mul_tables::sqr2_lo#1 init_mul_tables::sqr2_hi#1 init_mul_tables::dir#3 ] ( main:2::init_mul_tables:7 [ init_mul_tables::x_255#1 init_mul_tables::sqr2_lo#1 init_mul_tables::sqr2_hi#1 init_mul_tables::dir#3 ] ) -- pbuz1=_inc_pbuz1 inc sqr2_lo bne !+ inc sqr2_lo+1 !: - //SEG184 [90] if((byte*) init_mul_tables::sqr2_lo#1!=(const byte[512]) mul_sqr2_lo#0+(word/signed word) 511) goto init_mul_tables::@3 [ init_mul_tables::x_255#1 init_mul_tables::sqr2_lo#1 init_mul_tables::sqr2_hi#1 init_mul_tables::dir#3 ] ( main:2::init_mul_tables:5 [ init_mul_tables::x_255#1 init_mul_tables::sqr2_lo#1 init_mul_tables::sqr2_hi#1 init_mul_tables::dir#3 ] ) -- pbuz1_neq_pbuc1_then_la1 + //SEG294 [141] if((byte*) init_mul_tables::sqr2_lo#1!=(const byte[512]) mul_sqr2_lo#0+(word/signed word) 511) goto init_mul_tables::@3 [ init_mul_tables::x_255#1 init_mul_tables::sqr2_lo#1 init_mul_tables::sqr2_hi#1 init_mul_tables::dir#3 ] ( main:2::init_mul_tables:7 [ init_mul_tables::x_255#1 init_mul_tables::sqr2_lo#1 init_mul_tables::sqr2_hi#1 init_mul_tables::dir#3 ] ) -- pbuz1_neq_pbuc1_then_la1 lda sqr2_lo+1 cmp #>mul_sqr2_lo+$1ff bne b3 lda sqr2_lo cmp #init_mul_tables::@12] + //SEG301 init_mul_tables::@12 + //SEG302 [139] phi from init_mul_tables::@12 to init_mul_tables::@4 [phi:init_mul_tables::@12->init_mul_tables::@4] + //SEG303 [139] phi (byte) init_mul_tables::dir#3 = (byte) init_mul_tables::dir#2 [phi:init_mul_tables::@12->init_mul_tables::@4#0] -- register_copy +} +//SEG304 print_cls +print_cls: { + .label sc = 4 + //SEG305 [147] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG306 [147] phi (byte*) print_cls::sc#2 = ((byte*))(word/signed word) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + lda #<$400 + sta sc + lda #>$400 + sta sc+1 + //SEG307 [147] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG308 [147] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG309 print_cls::@1 + b1: + //SEG310 [148] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] ) -- _deref_pbuz1=vbuc1 + ldy #0 + lda #' ' + sta (sc),y + //SEG311 [149] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) -- pbuz1=_inc_pbuz1 + inc sc + bne !+ + inc sc+1 + !: + //SEG312 [150] if((byte*) print_cls::sc#1!=(word/signed word) 1024+(word/signed word) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) -- pbuz1_neq_vwuc1_then_la1 + lda sc+1 + cmp #>$400+$3e8 + bne b1 + lda sc + cmp #<$400+$3e8 + bne b1 + //SEG313 print_cls::@return + //SEG314 [151] return [ ] ( main:2::print_cls:5 [ ] ) rts - //SEG190 [94] phi from init_mul_tables::@3 to init_mul_tables::@12 [phi:init_mul_tables::@3->init_mul_tables::@12] - //SEG191 init_mul_tables::@12 - //SEG192 [88] phi from init_mul_tables::@12 to init_mul_tables::@4 [phi:init_mul_tables::@12->init_mul_tables::@4] - //SEG193 [88] phi (byte) init_mul_tables::dir#3 = (byte) init_mul_tables::dir#2 [phi:init_mul_tables::@12->init_mul_tables::@4#0] -- register_copy } .align $100 mul_sqr1_lo: .fill $200, 0 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/multiply.sym b/src/test/java/dk/camelot64/kickc/test/ref/multiply.sym index b9739290a..c04946c02 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/multiply.sym +++ b/src/test/java/dk/camelot64/kickc/test/ref/multiply.sym @@ -1,4 +1,4 @@ -(label) @10 +(label) @13 (label) @begin (label) @end (byte*) BGCOL @@ -11,14 +11,30 @@ (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) } +(word()) asm_multiply((byte) asm_multiply::a , (byte) asm_multiply::b) +(label) asm_multiply::@return +(byte) asm_multiply::a +(byte) asm_multiply::a#0 reg byte x 51.5 +(byte) asm_multiply::b +(byte) asm_multiply::b#0 reg byte a 51.5 +(byte*) asm_multiply::memA +(const byte*) asm_multiply::memA#0 memA = ((byte*))(byte/word/signed word) 254 +(byte*) asm_multiply::memB +(const byte*) asm_multiply::memB#0 memB = ((byte*))(byte/word/signed word) 255 +(word) asm_multiply::return +(word) asm_multiply::return#0 return zp ZP_WORD:6 34.33333333333333 +(word) asm_multiply::return#2 return zp ZP_WORD:6 202.0 (byte*) char_cursor -(byte*) char_cursor#1 char_cursor zp ZP_WORD:6 11.0 -(byte*) char_cursor#10 char_cursor zp ZP_WORD:6 0.7142857142857142 -(byte*) char_cursor#17 char_cursor zp ZP_WORD:6 20.0 -(byte*) char_cursor#19 char_cursor zp ZP_WORD:6 3.7 -(byte*) char_cursor#27 char_cursor zp ZP_WORD:6 4.0 -(byte*) char_cursor#39 char_cursor zp ZP_WORD:6 2.0 -(byte*) char_cursor#44 char_cursor zp ZP_WORD:6 4.0 +(byte*) char_cursor#1 char_cursor zp ZP_WORD:8 11.0 +(byte*~) char_cursor#100 char_cursor zp ZP_WORD:8 4.0 +(byte*) char_cursor#11 char_cursor zp ZP_WORD:8 0.823529411764706 +(byte*) char_cursor#2 char_cursor zp ZP_WORD:8 2.1818181818181817 +(byte*) char_cursor#20 char_cursor zp ZP_WORD:8 0.3333333333333333 +(byte*) char_cursor#27 char_cursor zp ZP_WORD:8 40.0 +(byte*) char_cursor#41 char_cursor zp ZP_WORD:8 4.0 +(byte*) char_cursor#64 char_cursor zp ZP_WORD:8 2.0 +(byte*) char_cursor#71 char_cursor zp ZP_WORD:8 10.0 +(byte*~) char_cursor#89 char_cursor zp ZP_WORD:8 4.0 (void()) init_mul_tables() (byte~) init_mul_tables::$2 reg byte a 22.0 (byte~) init_mul_tables::$5 reg byte a 22.0 @@ -35,29 +51,29 @@ (byte) init_mul_tables::c#1 reg byte x 2.357142857142857 (byte) init_mul_tables::c#2 reg byte x 22.0 (byte) init_mul_tables::dir -(byte) init_mul_tables::dir#2 dir zp ZP_BYTE:10 4.714285714285714 -(byte) init_mul_tables::dir#3 dir zp ZP_BYTE:10 7.333333333333333 +(byte) init_mul_tables::dir#2 dir zp ZP_BYTE:2 4.714285714285714 +(byte) init_mul_tables::dir#3 dir zp ZP_BYTE:2 7.333333333333333 (word) init_mul_tables::sqr -(word) init_mul_tables::sqr#1 sqr zp ZP_WORD:6 7.333333333333333 -(word) init_mul_tables::sqr#2 sqr zp ZP_WORD:6 22.0 -(word) init_mul_tables::sqr#3 sqr zp ZP_WORD:6 9.166666666666666 -(word) init_mul_tables::sqr#4 sqr zp ZP_WORD:6 6.6000000000000005 +(word) init_mul_tables::sqr#1 sqr zp ZP_WORD:8 7.333333333333333 +(word) init_mul_tables::sqr#2 sqr zp ZP_WORD:8 22.0 +(word) init_mul_tables::sqr#3 sqr zp ZP_WORD:8 9.166666666666666 +(word) init_mul_tables::sqr#4 sqr zp ZP_WORD:8 6.6000000000000005 (byte*) init_mul_tables::sqr1_hi -(byte*) init_mul_tables::sqr1_hi#1 sqr1_hi zp ZP_WORD:4 5.5 -(byte*) init_mul_tables::sqr1_hi#2 sqr1_hi zp ZP_WORD:4 3.0 +(byte*) init_mul_tables::sqr1_hi#1 sqr1_hi zp ZP_WORD:6 5.5 +(byte*) init_mul_tables::sqr1_hi#2 sqr1_hi zp ZP_WORD:6 3.0 (byte*) init_mul_tables::sqr1_lo -(byte*) init_mul_tables::sqr1_lo#1 sqr1_lo zp ZP_WORD:2 16.5 -(byte*) init_mul_tables::sqr1_lo#2 sqr1_lo zp ZP_WORD:2 2.5384615384615383 +(byte*) init_mul_tables::sqr1_lo#1 sqr1_lo zp ZP_WORD:4 16.5 +(byte*) init_mul_tables::sqr1_lo#2 sqr1_lo zp ZP_WORD:4 2.5384615384615383 (byte*) init_mul_tables::sqr2_hi -(byte*) init_mul_tables::sqr2_hi#1 sqr2_hi zp ZP_WORD:4 3.142857142857143 -(byte*) init_mul_tables::sqr2_hi#2 sqr2_hi zp ZP_WORD:4 11.0 +(byte*) init_mul_tables::sqr2_hi#1 sqr2_hi zp ZP_WORD:6 3.142857142857143 +(byte*) init_mul_tables::sqr2_hi#2 sqr2_hi zp ZP_WORD:6 11.0 (byte*) init_mul_tables::sqr2_lo -(byte*) init_mul_tables::sqr2_lo#1 sqr2_lo zp ZP_WORD:2 16.5 -(byte*) init_mul_tables::sqr2_lo#2 sqr2_lo zp ZP_WORD:2 4.125 +(byte*) init_mul_tables::sqr2_lo#1 sqr2_lo zp ZP_WORD:4 16.5 +(byte*) init_mul_tables::sqr2_lo#2 sqr2_lo zp ZP_WORD:4 4.125 (byte) init_mul_tables::x_2 -(byte) init_mul_tables::x_2#1 x_2 zp ZP_BYTE:10 11.0 -(byte) init_mul_tables::x_2#2 x_2 zp ZP_BYTE:10 4.888888888888889 -(byte) init_mul_tables::x_2#3 x_2 zp ZP_BYTE:10 8.25 +(byte) init_mul_tables::x_2#1 x_2 zp ZP_BYTE:2 11.0 +(byte) init_mul_tables::x_2#2 x_2 zp ZP_BYTE:2 4.888888888888889 +(byte) init_mul_tables::x_2#3 x_2 zp ZP_BYTE:2 8.25 (byte) init_mul_tables::x_255 (byte) init_mul_tables::x_255#1 reg byte x 5.5 (byte) init_mul_tables::x_255#2 reg byte x 11.0 @@ -66,10 +82,44 @@ (byte*) init_mul_tables_asm::mem (const byte*) init_mul_tables_asm::mem#0 mem = ((byte*))(byte/word/signed word) 255 (byte*) line_cursor +(byte*) line_cursor#1 line_cursor zp ZP_WORD:4 5.857142857142857 +(byte*) line_cursor#11 line_cursor zp ZP_WORD:4 24.0 +(byte*) line_cursor#17 line_cursor zp ZP_WORD:4 0.18181818181818182 +(byte*) line_cursor#19 line_cursor zp ZP_WORD:4 40.0 +(byte*) line_cursor#22 line_cursor zp ZP_WORD:4 4.0 (void()) main() (label) main::@1 (label) main::@2 +(label) main::@3 +(label) main::@4 (label) main::@return +(void()) mul_results_compare() +(label) mul_results_compare::@1 +(label) mul_results_compare::@10 +(label) mul_results_compare::@11 +(label) mul_results_compare::@12 +(label) mul_results_compare::@14 +(label) mul_results_compare::@2 +(label) mul_results_compare::@3 +(label) mul_results_compare::@4 +(label) mul_results_compare::@6 +(label) mul_results_compare::@7 +(label) mul_results_compare::@8 +(label) mul_results_compare::@9 +(label) mul_results_compare::@return +(byte) mul_results_compare::a +(byte) mul_results_compare::a#1 a zp ZP_BYTE:2 16.5 +(byte) mul_results_compare::a#5 a zp ZP_BYTE:2 14.933333333333332 +(byte) mul_results_compare::b +(byte) mul_results_compare::b#1 b zp ZP_BYTE:3 151.5 +(byte) mul_results_compare::b#2 b zp ZP_BYTE:3 33.666666666666664 +(word) mul_results_compare::ma +(word) mul_results_compare::ma#0 ma zp ZP_WORD:12 25.5 +(word) mul_results_compare::ms +(word) mul_results_compare::ms#0 ms zp ZP_WORD:10 22.666666666666664 +(const string) mul_results_compare::str str = (string) "multiply mismatch slow:@" +(const string) mul_results_compare::str1 str1 = (string) " / fast asm:" +(const string) mul_results_compare::str2 str2 = (string) "multiply results match!@" (byte[512]) mul_sqr1_hi (const byte[512]) mul_sqr1_hi#0 mul_sqr1_hi = { fill( 512, 0) } (byte[512]) mul_sqr1_lo @@ -80,21 +130,23 @@ (const byte[512]) mul_sqr2_lo#0 mul_sqr2_lo = { fill( 512, 0) } (void()) mul_tables_compare() (label) mul_tables_compare::@1 +(label) mul_tables_compare::@10 (label) mul_tables_compare::@2 (label) mul_tables_compare::@3 +(label) mul_tables_compare::@5 (label) mul_tables_compare::@6 (label) mul_tables_compare::@7 (label) mul_tables_compare::@8 -(label) mul_tables_compare::@9 (label) mul_tables_compare::@return (byte*) mul_tables_compare::asm_sqr -(byte*) mul_tables_compare::asm_sqr#1 asm_sqr zp ZP_WORD:4 7.333333333333333 -(byte*) mul_tables_compare::asm_sqr#2 asm_sqr zp ZP_WORD:4 5.833333333333333 +(byte*) mul_tables_compare::asm_sqr#1 asm_sqr zp ZP_WORD:10 7.333333333333333 +(byte*) mul_tables_compare::asm_sqr#2 asm_sqr zp ZP_WORD:10 8.75 (byte*) mul_tables_compare::kc_sqr -(byte*) mul_tables_compare::kc_sqr#1 kc_sqr zp ZP_WORD:2 16.5 -(byte*) mul_tables_compare::kc_sqr#2 kc_sqr zp ZP_WORD:2 3.1818181818181817 -(const string) mul_tables_compare::str str = (string) "mul table mismatch at @" +(byte*) mul_tables_compare::kc_sqr#1 kc_sqr zp ZP_WORD:4 16.5 +(byte*) mul_tables_compare::kc_sqr#2 kc_sqr zp ZP_WORD:4 3.8888888888888893 +(const string) mul_tables_compare::str str = (string) "multiply table mismatch at @" (const string) mul_tables_compare::str1 str1 = (string) " / @" +(const string) mul_tables_compare::str2 str2 = (string) "multiply tables match!@" (void()) print_byte((byte) print_byte::b) (byte~) print_byte::$0 reg byte y 4.0 (byte~) print_byte::$2 reg byte a 4.0 @@ -116,33 +168,61 @@ (label) print_cls::@1 (label) print_cls::@return (byte*) print_cls::sc -(byte*) print_cls::sc#1 sc zp ZP_WORD:6 16.5 -(byte*) print_cls::sc#2 sc zp ZP_WORD:6 16.5 +(byte*) print_cls::sc#1 sc zp ZP_WORD:4 16.5 +(byte*) print_cls::sc#2 sc zp ZP_WORD:4 16.5 +(void()) print_ln() +(label) print_ln::@1 +(label) print_ln::@return (void()) print_str((byte*) print_str::str) (label) print_str::@1 (label) print_str::@2 (label) print_str::@return (byte*) print_str::str -(byte*) print_str::str#0 str zp ZP_WORD:8 22.0 -(byte*) print_str::str#3 str zp ZP_WORD:8 11.5 -(byte*) print_str::str#5 str zp ZP_WORD:8 2.0 +(byte*) print_str::str#0 str zp ZP_WORD:6 22.0 +(byte*) print_str::str#7 str zp ZP_WORD:6 11.5 +(byte*) print_str::str#9 str zp ZP_WORD:6 2.0 (void()) print_word((word) print_word::w) (label) print_word::@1 (label) print_word::@return (word) print_word::w -(word) print_word::w#0 w zp ZP_WORD:4 4.0 -(word) print_word::w#1 w zp ZP_WORD:4 4.0 -(word) print_word::w#2 w zp ZP_WORD:4 2.6666666666666665 +(word) print_word::w#0 w zp ZP_WORD:6 4.0 +(word) print_word::w#1 w zp ZP_WORD:6 4.0 +(word) print_word::w#2 w zp ZP_WORD:6 4.0 +(word) print_word::w#3 w zp ZP_WORD:6 4.0 +(word) print_word::w#4 w zp ZP_WORD:6 3.9999999999999996 +(word()) 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:6 1001.0 +(word) slow_multiply::m#3 m zp ZP_WORD:6 2002.0 +(word) slow_multiply::return +(word) slow_multiply::return#0 return zp ZP_WORD:6 367.33333333333337 +(word) slow_multiply::return#2 return zp ZP_WORD:6 202.0 -zp ZP_WORD:2 [ mul_tables_compare::kc_sqr#2 mul_tables_compare::kc_sqr#1 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_lo#1 init_mul_tables::sqr2_lo#2 init_mul_tables::sqr2_lo#1 ] -zp ZP_WORD:4 [ mul_tables_compare::asm_sqr#2 mul_tables_compare::asm_sqr#1 print_word::w#2 print_word::w#0 print_word::w#1 init_mul_tables::sqr1_hi#2 init_mul_tables::sqr1_hi#1 init_mul_tables::sqr2_hi#2 init_mul_tables::sqr2_hi#1 ] +zp ZP_BYTE:2 [ mul_results_compare::a#5 mul_results_compare::a#1 init_mul_tables::x_2#3 init_mul_tables::x_2#2 init_mul_tables::x_2#1 init_mul_tables::dir#2 init_mul_tables::dir#3 slow_multiply::a#0 ] +zp ZP_BYTE:3 [ mul_results_compare::b#2 mul_results_compare::b#1 ] +zp ZP_WORD:4 [ line_cursor#11 line_cursor#22 line_cursor#19 line_cursor#17 line_cursor#1 mul_tables_compare::kc_sqr#2 mul_tables_compare::kc_sqr#1 init_mul_tables::sqr1_lo#2 init_mul_tables::sqr1_lo#1 init_mul_tables::sqr2_lo#2 init_mul_tables::sqr2_lo#1 print_cls::sc#2 print_cls::sc#1 ] +zp ZP_WORD:6 [ print_str::str#7 print_str::str#9 print_str::str#0 print_word::w#4 print_word::w#2 print_word::w#3 print_word::w#0 print_word::w#1 slow_multiply::return#0 slow_multiply::m#3 slow_multiply::m#1 init_mul_tables::sqr1_hi#2 init_mul_tables::sqr1_hi#1 init_mul_tables::sqr2_hi#2 init_mul_tables::sqr2_hi#1 slow_multiply::return#2 asm_multiply::return#2 asm_multiply::return#0 ] reg byte x [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] reg byte a [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] -zp ZP_WORD:6 [ char_cursor#44 char_cursor#27 char_cursor#39 char_cursor#19 char_cursor#17 char_cursor#10 char_cursor#1 print_cls::sc#2 print_cls::sc#1 init_mul_tables::sqr#3 init_mul_tables::sqr#4 init_mul_tables::sqr#1 init_mul_tables::sqr#2 ] -zp ZP_WORD:8 [ print_str::str#3 print_str::str#5 print_str::str#0 ] +zp ZP_WORD:8 [ char_cursor#41 char_cursor#64 char_cursor#2 char_cursor#71 char_cursor#27 char_cursor#11 char_cursor#89 char_cursor#20 char_cursor#1 char_cursor#100 init_mul_tables::sqr#3 init_mul_tables::sqr#4 init_mul_tables::sqr#1 init_mul_tables::sqr#2 ] +reg byte y [ slow_multiply::i#2 slow_multiply::i#1 ] +zp ZP_WORD:10 [ mul_tables_compare::asm_sqr#2 mul_tables_compare::asm_sqr#1 mul_results_compare::ms#0 ] reg byte x [ init_mul_tables::c#2 init_mul_tables::c#1 ] -zp ZP_BYTE:10 [ init_mul_tables::x_2#3 init_mul_tables::x_2#2 init_mul_tables::x_2#1 init_mul_tables::dir#2 init_mul_tables::dir#3 ] reg byte x [ init_mul_tables::x_255#2 init_mul_tables::x_255#1 ] +reg byte x [ slow_multiply::b#0 ] +reg byte x [ asm_multiply::a#0 ] +reg byte a [ asm_multiply::b#0 ] +zp ZP_WORD:12 [ mul_results_compare::ma#0 ] reg byte y [ print_byte::$0 ] reg byte a [ print_byte::$2 ] reg byte a [ init_mul_tables::$2 ]